想知道 if not foo is None
是否与 if foo
相同?使用 Python 2.7 和 foo
是一个字符串。
原文由 Lin Ma 发布,翻译遵循 CC BY-SA 4.0 许可协议
想知道 if not foo is None
是否与 if foo
相同?使用 Python 2.7 和 foo
是一个字符串。
原文由 Lin Ma 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答972 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
对于空字符串,两者都不同:
不会打印任何东西,因为它是 空 的,因此被认为是
False
但是:将打印,因为
foo
不是 None !我根据 PEP8 更改了它。
if foo is not None
等同于你的if not foo is None
但更具可读性,因此被 PEP8 推荐。关于 Python 中的一般原则的更多信息:
if
只会是True
如果a = None
被显式设置。另一方面:
当它是
True
时有几种评估方法:Python 尝试调用
a.__bool__
如果实现了,则使用返回值。None
,False
,0.0
,0
will evaluate toFalse
because their__bool__
方法返回False
。如果
a.__bool__
没有实现,那么它会检查a.__len__.__bool__
返回的内容。''
,[]
,set()
,dict()
, etc. will evaluate toFalse
because their__len__
方法返回0
。这是False
因为bool(0)
是False
。如果甚至
a.__len__
没有实现,那么如果只是返回True
。True
。另请参阅:thy python 文档中 的真值测试。