bool() 与不是 None
bool() vs is not None
我有两个 return 布尔函数。第一个是使用 bool()
,第二个是使用 is not None
.
def func_1(x) -> bool:
return bool(x)
def func_2(x) -> bool:
return x is not None
foo = "something"
bar = None
print(func_1(foo))
print(func_2(foo))
print("-----")
print(func_1(bar))
print(func_2(bar))
这是输出
True
True
-----
False
False
在这种情况下,is not None
和 bool()
之间有区别吗?使用一个或另一个时,我可能需要考虑什么?
根据 this site,使用 bool 函数,以下所有内容都会 return False :
- None
- 错
- 零
- 运营商...
Is there a difference between is not None
and bool()
in this instance?
是的!查看 Python 文档 here
,你会发现有些值 falsey 甚至与 None
.
不同
举个例子:
>>> 0 != None
True
>>> bool(0)
False
下面是bool
对各种类型的影响(不全面):
- 数字类型:如果为 0,则为假,否则为真
- 序列类型(列表、元组等):如果为空则为假,否则为真
- 对象:如果 None 则为假,否则为真
(请注意,如果将 None
分配给先前引用序列类型的变量,语义将从上面的第 2 点变为第 3 点)。
下面是is not None
的效果:
- 变量赋值为 None: False
- 其他:正确
我有两个 return 布尔函数。第一个是使用 bool()
,第二个是使用 is not None
.
def func_1(x) -> bool:
return bool(x)
def func_2(x) -> bool:
return x is not None
foo = "something"
bar = None
print(func_1(foo))
print(func_2(foo))
print("-----")
print(func_1(bar))
print(func_2(bar))
这是输出
True
True
-----
False
False
在这种情况下,is not None
和 bool()
之间有区别吗?使用一个或另一个时,我可能需要考虑什么?
根据 this site,使用 bool 函数,以下所有内容都会 return False :
- None
- 错
- 零
- 运营商...
Is there a difference between
is not None
andbool()
in this instance?
是的!查看 Python 文档 here
,你会发现有些值 falsey 甚至与 None
.
举个例子:
>>> 0 != None
True
>>> bool(0)
False
下面是bool
对各种类型的影响(不全面):
- 数字类型:如果为 0,则为假,否则为真
- 序列类型(列表、元组等):如果为空则为假,否则为真
- 对象:如果 None 则为假,否则为真
(请注意,如果将 None
分配给先前引用序列类型的变量,语义将从上面的第 2 点变为第 3 点)。
下面是is not None
的效果:
- 变量赋值为 None: False
- 其他:正确