我可以使用:
if A:
而不是
if A is not None:
后者似乎太啰嗦了。有区别吗?
我可以使用:
if A:
而不是
if A is not None:
后者似乎太啰嗦了。有区别吗?
当前回答
Python >= 2.6,
如果我们写如
if A:
将生成如下警告:
FutureWarning:该方法的行为将来会改变 版本。使用特定的'len(elem)'或'elem is not None'测试 代替。
所以我们可以用
if A is not None:
其他回答
前者更Pythonic(更好的理想代码),但如果A为False(不是None),则不会执行块。
我看过的大多数指南都建议你应该使用
如果一个:
除非你有理由说得更具体些。
有一些细微的差别。除了None,还有其他返回False的值,例如空列表或0,所以要考虑一下你真正要测试的是什么。
if A:如果A为0,false,空字符串,空列表或None,将证明为假,这可能导致不希望的结果。
该声明
if A:
将调用A.__bool__()(参见特殊方法名称文档),在Python 2中称为__nonzero__,并使用该函数的返回值。总结如下:
object.__bool__(自我) 调用来实现真值测试和内置操作bool();应该返回False或True。如果没有定义此方法,则调用__len__(),如果对象的结果是非零,则认为该对象为真。如果一个类既没有定义__len__()也没有定义__bool__(),则它的所有实例都被认为是真。
另一方面,
if A is not None:
只比较引用A和None,看它们是否相同。
if x: #x is treated True except for all empty data types [],{},(),'',0 False, and None
所以它不等于
if x is not None # which works only on None