我可以使用:
if A:
而不是
if A is not None:
后者似乎太啰嗦了。有区别吗?
我可以使用:
if A:
而不是
if A is not None:
后者似乎太啰嗦了。有区别吗?
当前回答
我看过的大多数指南都建议你应该使用
如果一个:
除非你有理由说得更具体些。
有一些细微的差别。除了None,还有其他返回False的值,例如空列表或0,所以要考虑一下你真正要测试的是什么。
其他回答
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
None是Python中的一个特殊值,通常指定一个未初始化的变量。要测试A是否没有这个特定的值,可以使用:
if A is not None
Falsey值是Python中一类特殊的对象(例如false,[])。要测试A是否是假的,请使用:
if not A
因此,这两种表达方式是不一样的,你最好不要把它们当作同义词。
附注:None也是假的,所以第一个表达暗示了第二个表达。但是第二个包含了除了None之外的其他错误值。现在…如果你能确定在A中除了None之外没有其他假值,那么你可以用第二个表达式替换第一个表达式。
如PEP8所写:
应该始终对像None这样的单例对象进行比较 'is'或'is not',绝不是相等运算符。 另外,当你真正想要表达的是“如果x不是None”时,注意不要写成“if x” ——例如,当测试一个变量或参数是否默认为 None被设置为其他值。另一个值可能有类型 (例如容器)在布尔上下文中可能是假的!
前者更Pythonic(更好的理想代码),但如果A为False(不是None),则不会执行块。
if A:如果A为0,false,空字符串,空列表或None,将证明为假,这可能导致不希望的结果。