“if not x”和“if x is None”有什么区别?

3 投票
1 回答
6602 浏览
提问于 2025-04-18 10:07

我有:

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

所以如果你的代码需要在 xNonex 是一个空列表、元组、字符串,或者数字零时表现不同,那么就应该用 x == None 或者 x is None,而不是用 not x

撰写回答