標準約定使用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