“如果不是 x”和“如果 x 是无”之间有区别吗?

Wil*_*nda 3 python if-statement nonetype

我有:

x = None
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的许多参考文献都以以下方式进行“空”检查:

if x is None:
    ...
Run Code Online (Sandbox Code Playgroud)

(例如,这个问题)。

而在我的代码中,我有:

if not x:
    ...
Run Code Online (Sandbox Code Playgroud)

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

如果这很明显或者之前有人问过这个问题,我深表歉意 - 我在网站上找不到这个特定问题的答案。

tim*_*geb 5

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
Run Code Online (Sandbox Code Playgroud)

所以,如果你的代码应该采取不同的时候xNone相对于x作为一个空列表,元组,字符串,数字零,...然后使用x == Nonex is None代替not x