我試過這段代碼,看看會發生什麼,但我不能得到它背後的邏輯,我是期待一個錯誤...只是出於好奇爲什麼它給我真正的輸出爲「無」不是一個布爾類型...所以爲什麼「不是無=真」
python2.7
x = not None
print x
我試過這段代碼,看看會發生什麼,但我不能得到它背後的邏輯,我是期待一個錯誤...只是出於好奇爲什麼它給我真正的輸出爲「無」不是一個布爾類型...所以爲什麼「不是無=真」
x = not None
print x
當Python評估not
,它會嘗試將該值轉換爲布爾。在這種情況下,None是「falsy」(https://docs.python.org/2.4/lib/truth.html),因此not None
的計算結果爲True
。
因此,x = not None
相當於x = True
- 即您將變量x分配爲True。
None
評估爲False
。 False
的反義詞是True
。因此,not None
的結果是True
。布爾類型轉換自動發生,類似於3 + True
中發生的情況,它給出4
。
但是None和False是兩個完全不同的東西。 沒有類型NoneType和值無 和True的類型爲「Boolean」,值爲True –
python中的布爾值在類型方面通常非常流暢,許多事物可以隱式地投射到它們中(比如'None'),並且它們可以也可以隱式轉換爲其他類型,比如'int'。 –
因爲not
是布爾型運算符(邏輯NOT),所以它將None轉換爲布爾值。無,因爲布爾值是False。與False相反,或者not None
爲True,因此打印爲True。
>>> print(bool(None))
False
>>> print(not bool(None))
True
那麼爲什麼它的執行else語句 如果(不是無)==假: 打印「相同」 其他: 打印「的東西是腥」 –
@ManojGoswami它將打印「的東西是腥」,因爲真實不等於假 – Li357
那麼爲什麼這個代碼給我輸出else語句 如果(不是無)==假: 打印 「相同」 其他: 打印 「的東西是腥」 –
因爲'(不是無)= = False',計算結果爲False(因爲'True!= False'),發送給'else'塊。 –
謝謝你的回答我錯過了這個事實(不是None = True) –