“if not x”和“if x is None”有什么区别?
我有:
x = None
到目前为止,我找到的很多参考资料都是用以下方式进行“空值”检查:
if x is None:
...
(例如,这个问题)。
而在我的代码中,我使用的是:
if not x:
...
我现在的做法按预期工作(返回真),但我想知道是否有任何情况下,使用第一种示例中的检查方式更优。
如果这个问题很明显,或者之前有人问过,我很抱歉——我在网站上找不到这个具体问题的答案。
1 个回答
5
not x
会对所有在布尔上下文中被认为是 False
的东西返回 True
。举几个例子:
>>> x = ()
>>> not x
True
>>> x = []
>>> not x
True
>>> x = ''
>>> not x
True
>>> x = 0
>>> not x
True
>>> x is None
False
所以如果你的代码需要在 x
是 None
和 x
是一个空列表、元组、字符串,或者数字零时表现不同,那么就应该用 x == None
或者 x is None
,而不是用 not x
。