不是 Python 中的 None 测试

2022-09-05 01:19:20

在这些测试中,不是无测试。

if val != None:

if not (val is None):

if val is not None:

哪一个更可取,为什么?


答案 1
if val is not None:
    # ...

是 Pythonic 习语,用于测试变量未设置为 。此成语在使用默认参数声明关键字函数的情况下具有特殊用途。 测试 Python 中的标识。因为在正在运行的Python脚本/程序中有一个并且只有一个存在的实例,因此是对此的最佳测试。正如Johnsyweb所指出的,这在PEP 8的“编程建议”下进行了讨论。NoneisNoneis

至于为什么这是首选

if not (val is None):
    # ...

这只是Python禅宗的一部分:“可读性很重要。好的Python通常接近好的伪代码


答案 2

来自,编程建议,PEP 8

与 None 这样的单例比较应该总是用 or 来完成,而不是相等运算符。isis not

另外,当你真正想要的时候,要小心写作 - 例如,在测试默认为None的变量或参数是否设置为其他值时。另一个值可能具有在布尔上下文中可能为 false 的类型(如容器)!if xif x is not None

PEP 8是任何Python程序员的必备读物。