Python有這兩個(其中)內建對象。他們只是對象;在開始時,他們還沒有任何名字,但要知道我們所指的是什麼,我們稱之爲0x600D
和0xBAD
。
開始執行一個Python(2.X)腳本之前,該名True
獲取綁定對象0x600D
,並且名稱False
獲取綁定對象0xBAD
,所以當程序是指True
,它着眼於0x600D
。
因爲0x600D
和0xBAD
知道,他們通常使用的名稱True
和False
,那就是當他們得到打印他們的輸出,即0x600D
回報'True'
等等__str__
方法。
True = False
現在將名稱True
綁定到不同的對象。從現在開始,名稱True
和False
指的是相同的對象0xBAD
,其在打印時輸出False
。
True = True
並沒有真正做任何事情:它需要通過名稱True
所指的對象,並結合新(老)名稱True
此對象。由於(因爲上一步)True
在此之前指的是0xBAD
,所以在此之後它仍然指的是0xBAD
。因此,打印仍然輸出False
。
True = not True
首先把該名稱True
綁定到,這是0xBAD
的對象。它將此對象提供給not
運算符。 not
不在乎(或知道)這裏用什麼名字來指代0xBAD
,它只知道當給出0xBAD
它應該返回0x600D
。然後將此返回值提供給賦值運算符=
,將名稱True
綁定到此對象。
由於名稱True
現在再次指對象0x600D
,調用print True
輸出True
,世界又好了。通過轉換整數字面量布爾變量
True = 1==1
False = 1==0
或者:
並不好老笑話'的#define真正FALSE'在這裏行動? – Amarghosh
在版本3中,assigment True = False引發了一個sintax錯誤,所以我想你的問題涉及版本2 – jab
奇怪的是什麼?謹慎闡述? – ghostdog74