2016-07-05 22 views

回答

4

當Python評估not,它會嘗試將該值轉換爲布爾。在這種情況下,None是「falsy」(https://docs.python.org/2.4/lib/truth.html),因此not None的計算結果爲True

因此,x = not None相當於x = True - 即您將變量x分配爲True。

+0

那麼爲什麼這個代碼給我輸出else語句 如果(不是無)==假: 打印 「相同」 其他: 打印 「的東西是腥」 –

+0

因爲'(不是無)= = False',計算結果爲False(因爲'True!= False'),發送給'else'塊。 –

+0

謝謝你的回答我錯過了這個事實(不是None = True) –

0

None評估爲FalseFalse的反義詞是True。因此,not None的結果是True。布爾類型轉換自動發生,類似於3 + True中發生的情況,它給出4

+0

但是None和False是兩個完全不同的東西。 沒有類型NoneType和值無 和True的類型爲「Boolean」,值爲True –

+0

python中的布爾值在類型方面通常非常流暢,許多事物可以隱式地投射到它們中(比如'None'),並且它們可以也可以隱式轉換爲其他類型,比如'int'。 –

1

因爲not是布爾型運算符(邏輯NOT),所以它將None轉換爲布爾值。無,因爲布爾值是False。與False相反,或者not None爲True,因此打印爲True。

>>> print(bool(None)) 
False 

>>> print(not bool(None)) 
True 
+0

那麼爲什麼它的執行else語句 如果(不是無)==假: 打印「相同」 其他: 打印「的東西是腥」 –

+0

@ManojGoswami它將打印「的東西是腥」,因爲真實不等於假 – Li357

相關問題