标准约定使用if foo is None
而不是if foo == None
来测试值是否具体为None
。布尔标识== True对比为真
如果你想确定一个值是否正好是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 booleans - if x:, vs if x == True, vs if x is True。但是,它只能确定是否应使用if foo
,if foo == True
或if foo is True
来确定foo
是否具有真实值。
更新:据PEP 285§规格:
值假和真将是单身,像无。
@AshwiniChaudhary:[那根本不是真的](https://docs.python.org/2/library/constants.html)。真和假都是单身。 – Kevin 2014-12-03 16:37:15
@AshwiniChaudhary'True'和'False'是单身人士。 'bool'构造函数将通过标识返回'True'或'False',所以你不能创建一个布尔值,它不会使用'is'与'True'或'False'进行比较。 – 2014-12-03 16:40:02
@AshwiniChaudhary另请参阅:https://hg.python.org/cpython/rev/01a7e66525c2/ – 2014-12-03 16:41:42