< 'NoneType' 和 'int' 实例之间不支持

目录

< not supported between instances of ‘NoneType’ and ‘int’

  1. < ‘NoneType’ 和 ‘int’ 实例之间不支持
  2. ‘>’ 在 ‘NoneType’ 和 float 实例之间不受支持

< 在 ‘NoneType’ 和 ‘int’ 实例之间不支持

当我们在一个值和None一个
int.

要解决错误,请找出None值的来源并更正分配。

nonetype 和 int 实例之间不支持类型错误

下面是错误如何发生的示例。

主程序
int_1 = None int_2 = 10 # ⛔️ TypeError: '<' not supported between instances of 'NoneType' and 'int' if int_1 < int_2: print('success')

我们在导致错误的不兼容类型(None
int )的值之间使用了比较运算符。

None在比较之前检查变量是否未存储

if如果您需要

在使用比较运算符之前
检查变量是否未存储 None 值,请使用语句。

主程序
int_1 = None int_2 = 10 if int_1 is not None: print(int_1 < int_2) else: # 👉️ this runs print('The variable stores a None value')

if语句检查变量是否不存储None值。

比较运算符仅在变量不是时使用None,因此不会引发错误。

或者,您可以将变量设置为0if it stores None

主程序
int_1 = None int_2 = 10 if int_1 is None: int_1 = 0 print(int_1 < int_2) # 👉️ True

如果int_1变量存储一个值,我们在使用比较运算符之前None将其设置为。0

追踪 None 值的来源

要解决错误,您必须找出None值的来源并更正赋值或有条件地检查变量是否不存储
None

最常见的None价值来源是:

  1. 有一个不返回任何东西的函数(None隐式返回)。
  2. 将变量显式设置为None.
  3. 将变量分配给调用不返回任何内容的内置函数的结果。
  4. 具有仅在满足特定条件时才返回值的函数。

确保你没有将变量重新分配给 None

确保您没有错误地将变量重新分配给None.

主程序
int_1 = 50 int_1 = None # ⛔️ TypeError: '>' not supported between instances of 'NoneType' and 'int' print(int_1 > 25)

我们最初将变量设置为整数,但后来将其重新分配给None.

尝试将None值与整数进行比较会导致错误。

不返回任何内容的函数返回 None

不显式返回值的函数 return None

主程序
# 👇️ this function returns None def get_int(): print(20) int_2 = 10 # ⛔️ TypeError: '>' not supported between instances of 'NoneType' and 'int' if get_int() > int_2: print('success')

您可以使用return 语句从函数返回值。

主程序
def get_int(): return 20 int_2 = 10 if get_int() > int_2: # ✅ this runs print('success')

该函数现在返回一个整数,因此我们可以安全地比较两个整数值。

许多内置方法返回 None

许多内置方法就地改变对象并
返回 None,例如sort(), append(),extend()等。

另一个常见的值来源None是尝试将
的输出分配print()给变量

主程序
result = print(5 + 5) print(result) # 👉️ None

print()函数打印一条消息并返回None

您可以删除对 的调用print()并将表达式的结果分配给变量。

主程序
result = 5 + 5 print(result) # 👉️ 10

有一个只有在满足条件时才返回值的函数

错误的另一个常见原因是具有仅在满足条件时才返回值的函数。

主程序
def get_int(a): if a > 5: return a int_1 = get_int(4) print(int_1) # 👉️ None int_2 = 10 # ⛔️ TypeError: '>' not supported between instances of 'NoneType' and 'int' print(int_1 > int_2)

if函数中的语句get_int在提供的数字大于 时运行5

在所有其他情况下,该函数不返回任何内容并最终隐式返回None

要解决错误,您要么必须检查函数是否未返回
None,要么在不满足条件时返回默认值。

主程序
def get_int(a): if a > 5: return a return 0 int_1 = get_int(4) print(int_1) # 👉️ 0 int_2 = 10 print(int_1 > int_2) # 👉️ False

现在,无论条件是否满足,函数都保证返回一个值。

# ‘>’ 在 ‘NoneType’ 和 float 实例之间不被支持

当我们在一个值和None一个
float.

要解决错误,请追踪None值的来源并更正分配。

nonetype 和 float 实例之间不支持类型错误

下面是错误如何发生的示例。

主程序
float_1 = None float_2 = 3.14 # ⛔️ TypeError: '>' not supported between instances of 'NoneType' and 'float' if float_1 > float_2: print('success')

我们在导致错误的不兼容类型 (None
)
的值之间使用了比较运算符。
float

# 在比较之前检查变量是否不是 None

如果您需要在使用比较运算符之前if检查变量是否未存储值,
请使用语句。
None

主程序
float_1 = None float_2 = 3.14 if float_1 is not None: print(float_1 < float_2) else: # 👉️ this runs print('variable stores a None value')

示例中的变量存储一个None值,因此永远不会评估比较并且else块运行。

或者,您可以将变量设置为0if it stores None

主程序
float_1 = None float_2 = 3.14 if float_1 is None: float_1 = 0 print(float_1 < float_2) # 👉️ True

如果float_1变量存储一个值,我们在使用比较运算符之前None将其设置为。0

# 追踪变量被赋予 None 值的地方

要解决错误,您必须找出None值的来源并更正赋值或有条件地检查变量是否不存储
None

最常见的None价值来源是:

  1. 有一个不返回任何东西的函数(None隐式返回)。
  2. 将变量显式设置为None.
  3. 将变量分配给调用不返回任何内容的内置函数的结果。
  4. 具有仅在满足特定条件时才返回值的函数。

# 错误地重新分配一个浮点变量

确保您没有将最初设置为浮点数的变量设置为某个
None值。

主程序
float_1 = 5.5 float_1 = None # ⛔️ TypeError: '>' not supported between instances of 'NoneType' and 'float' print(float_1 > 3.14)

我们将float_1变量初始化为一个浮点数,但后来它被赋予了一个None值。

# 确保从你的函数中返回

不显式返回值的函数 return None

主程序
# 👇️ this function returns None def get_float(): print(5.5) float_2 = 3.14 # ⛔️ TypeError: '>' not supported between instances of 'NoneType' and 'float' if get_float() > float_2: print('success')

You can use a return statement to
return a value from a function.

main.py
def get_float(): return 5.5 float_2 = 3.14 if get_float() > float_2: # ✅ this runs print('success')

The function returns a floating-point number, so the comparison works as
expected.

# A function returning a value only if a condition is met

Another common cause of the error is having a function that returns a value only
if a condition is met.

main.py
def get_float(a): if a > 5: return a float_1 = get_float(4) print(float_1) # 👉️ None float_2 = 3.14 # ⛔️ TypeError: '<' not supported between instances of 'NoneType' and 'float' print(float_1 < float_2)

The if statement in the get_float function is only run if the passed in
number is greater than 5.

In all other cases, the function doesn’t return anything and ends up implicitly returning None.

To solve the error, you either have to check if the function didn’t return
None, or return a default value if the condition is not met.

main.py
def get_float(a): if a > 5: return a return 0 # 👈️ return 0 if condition not met float_1 = get_float(4) print(float_1) # 👉️ 0 float_2 = 3.14 print(float_1 < float_2) # 👉️ True

Now the function is guaranteed to return a value regardless if the condition is
met.