目录
< not supported between instances of ‘NoneType’ and ‘int’
< 在 ‘NoneType’ 和 ‘int’ 实例之间不支持
当我们在一个值和None
一个
int
.
要解决错误,请找出None
值的来源并更正分配。
下面是错误如何发生的示例。
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
,因此不会引发错误。
或者,您可以将变量设置为0
if 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
价值来源是:
- 有一个不返回任何东西的函数(
None
隐式返回)。 - 将变量显式设置为
None
. - 将变量分配给调用不返回任何内容的内置函数的结果。
- 具有仅在满足特定条件时才返回值的函数。
确保你没有将变量重新分配给 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
值的来源并更正分配。
下面是错误如何发生的示例。
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
块运行。
或者,您可以将变量设置为0
if 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
价值来源是:
- 有一个不返回任何东西的函数(
None
隐式返回)。 - 将变量显式设置为
None
. - 将变量分配给调用不返回任何内容的内置函数的结果。
- 具有仅在满足特定条件时才返回值的函数。
# 错误地重新分配一个浮点变量
确保您没有将最初设置为浮点数的变量设置为某个
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.
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.
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
.
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.
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.