if val != None:
if not (val is None):
if val is not None:
哪一个更可取,为什么?
if val is not None:
# ...
是用于测试变量未设置为 的 Pythonic 习语。此习惯用语在使用默认参数声明关键字函数时具有特殊用途。 在 Python 中测试身份。因为在正在运行的 Python 脚本/程序中存在一个且只有一个实例,是对此的最佳测试。正如Johnsyweb指出的那样,这在PEP 8的“编程建议”下进行了讨论。None
is
None
is
至于为什么这更受欢迎
if not (val is None):
# ...
这只是Python禅宗的一部分:“可读性很重要。好的Python通常接近于好的伪代码。
来自,编程建议,PEP 8:
与像 None 这样的单例比较应该总是用 或 ,永远不要使用相等运算符。
is
is not
另外,当你真正想写的时候要小心——例如,在测试默认为 None 的变量或参数是否设置为其他值时。另一个值可能具有在布尔上下文中可能为 false 的类型(例如容器)!
if x
if x is not None
PEP 8 是任何 Python 程序员的必备读物。
对于这些类型的问题,最好的选择是确切地了解python是做什么的。该模块的信息量非常大:dis
>>> import dis
>>> dis.dis("val != None")
1 0 LOAD_NAME 0 (val)
2 LOAD_CONST 0 (None)
4 COMPARE_OP 3 (!=)
6 RETURN_VALUE
>>> dis.dis("not (val is None)")
1 0 LOAD_NAME 0 (val)
2 LOAD_CONST 0 (None)
4 COMPARE_OP 9 (is not)
6 RETURN_VALUE
>>> dis.dis("val is not None")
1 0 LOAD_NAME 0 (val)
2 LOAD_CONST 0 (None)
4 COMPARE_OP 9 (is not)
6 RETURN_VALUE
请注意,最后两种情况简化为相同的操作序列,Python 读取并使用运算符。第一个在与 进行比较时使用运算符。not (val is None)
is not
!=
None
正如其他答案所指出的那样,在比较时使用是一个坏主意。!=
None
模板简介:该模板名称为【Python “if x is not None” 或 ‘if not x is None’?无测试中】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。