标准惯例是使用 if foo is None
而不是 if foo == None
来测试一个值是否是特定的 None
。
如果您想确定一个值是否正好是 True
(而不仅仅是类真值) ,有什么理由使用 if foo == True
而不是 if foo is True
吗?这在 CPython (2.x 和3.x)、 Jython、 PyPy 等实现之间是否有所不同。?
例如: 假设 True
被用作一个单例值,你想要区别于值 'bar'
,或者任何其他类真值:
if foo is True: # vs foo == True
...
elif foo == 'bar':
...
是否存在使用 if foo is True
会产生与 if foo == True
不同的结果的情况?
注意: 我知道 Python 布尔值-if x: ,vs if x = = True,vs if x 为 True。然而,它只是处理通常是否应该使用 if foo
、 if foo == True
或 if foo is True
来确定 foo
是否具有类真值。
更新: 根据 PEP 285规范:
False 和 True 值将是单例,就像 Nothing 一样。