小能豆

Python 中的 not None 测试

py

其中无任何测试。

if val != None:

if not (val is None):

if val is not None:

哪一个更可取?为什么?


阅读 30

收藏
2024-10-03

共2个答案

小能豆

if val is not None:
    # ...

是用于测试变量未设置为 的 Python 惯用语。此惯用语在声明具有默认参数 的关键字函数None时有特殊用途。测试 Python 中的身份。因为在正在运行的 Python 脚本/程序中存在且只有一个 实例,所以 是最佳测试。\

至于为什么这比

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

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

2024-10-03
小能豆

检查值是否存在的首选方法None是:

if val is not None:

为什么这是更好的选择?

  1. 清晰度和可读性
  2. if val is not None:很清晰,直接检查值是否不为None。它读起来很自然,意图也很明确:你专门在与 进行比较None
  3. None在 Python 中是单例对象,这意味着只有一个实例Noneis关键字检查身份,确保检查对象是否确实是None
  4. 正确性
  5. if val != None:使用相等运算符 ( !=),如果被比较的对象通过 实现自己的相等性检查,则可能导致意外结果__eq__。这可能与身份比较的行为不同,尤其是在自定义类中。
  6. if not (val is None):是一个有效的检查,但它不必要地复杂。它的可读性较差,并且增加了一个额外的否定步骤,使得代码乍一看更难理解。

概括:

  • if val is not None:是在 Python 中检查的惯用、清晰且正确的方法None
2024-10-03