2016-10-27 21 views
0

>>> if '' is not None: ... print'23333' ... 23333 我認爲(不是無)是真和('')是假的,爲什麼它運行打印?爲什麼這如果在Python中返回True

+0

您正在檢查''''與'None'不是同一個對象,它們不是同一個對象,因此檢查返回True,因此情況發生。 –

+0

'不是'是正在發生的完整運營商,嘗試運行'if''(不是無)' –

回答

4

isis not測試對象的身份,即是檢驗''None是同一個對象,他們都沒有,所以測試你的情況返回True

the Python documentation

運營商isis not測試對象標識:x is y是真 當且僅當x和y是相同的對象。 x is not y產生 逆真值。

換一種方式,雖然''None具有相同的"truthiness",那就是他們都計算爲False如果你bool(None)bool(''),他們對不指向同一個對象。

+0

真誠的感謝,我知道了 – admin

+0

@dscdtc沒有問題。這可能會讓人感到困惑。 – elethan

2

is not是一個單個運算符,等於is的否定。由於'' is None爲假,因此'' is not None爲真。

但由於is測試身份,不等於,'' is (not None)仍然不會做你想做的。

+0

真誠的感謝,我明白了 – admin

相關問題