“if not x”和“if x is None”之间是否有区别?

时间:2014-06-17 17:54:13

标签: python if-statement nonetype

我有:

x = None

到目前为止,我发现的许多引用都按以下方式进行“null”检查:

if x is None:
    ...

(例如,this question)。

在我的代码中,我有:

if not x:
    ...

我正在做的事情当前按预测工作(返回true),但我想知道是否有任何用例,在第一个示例中执行检查是否最佳。

道歉,如果这是非常明显的或者之前已经提出过问题 - 我在网站上找不到这个具体问题的答案。

1 个答案:

答案 0 :(得分:4)

对于在布尔上下文中求值为not x的所有内容,

True也将返回False。一些例子:

>>> x = ()
>>> not x
True
>>> x = []
>>> not x
True
>>> x = ''
>>> not x
True    
>>> x = 0
>>> not x
True    
>>> x is None
False

因此,如果您的代码在xNone时采取不同的行为,而x为空列表,则为元组,字符串,数字为零,...然后使用{{ 1}}或x == None代替x is None