Python 中經常使用的數據類型bool
(布爾)類型的實例對象(值)就兩個,真和假,分別用True
和False
表示。在if 條件判斷和while 語句中常常用到,不過在Python2.x 中,True 和False 卻有着奇怪的用法,就是真假能夠相互被替換,先看下面代碼: python
>>> True
True
>>> False
False
>>> if True:
... print True
...
True
>>> if not False:
... print False
...
False複製代碼
這段代碼邏輯理解起來沒任何問題,if 判斷中只要表達式的值返回 True
,就執行if 代碼塊中的語句。再來看下一段代碼:程序員
>>> True, False = False, True
>>> True
False
>>> False
True
>>> if not True:
... print False
...
True
>>> if False:
... print True
...
False
>>>複製代碼
我把True 和False 互換了一下,就是傳說中的顛卻是非黑白。真變成了假,假變成了真。因而在條件判斷中,表達式的值返回False
才執行代碼塊中的語句。到底是什麼緣由呢?ui
在Python2.7 中,True
和False
是兩個內建(built-in)變量,內建變量和普通自定義的變量如a, b, c同樣能夠被從新賦值,所以咱們能夠把這兩個變量進行任意的賦值,好比: spa
True = 2
False = "abc"複製代碼
甚至是True和False進行互換.net
tmp = True
True = False
False = tmp複製代碼
互換後變量True
指向了假
對象,False
指向了真
對象:
3d
所以,在Python 中咱們不要隨意給True 和False 賦新的值,不然程序代碼邏輯都會亂套了。這也算是Python2.x 中一個坑,不過在Python3.x 中,終於把這個兩變量變成了關鍵字,也就是說,程序員再也無法給這兩變量賦新的值了,今後True
永遠指向真
對象,False
指向假
對象,永不分離。用keyword
模塊檢測True 和False 是否爲關鍵字。code
>>> import keyword
>>> keyword.iskeyword('True')
False複製代碼
個人博客:foofish.netcdn
掃一掃關注公衆號獲取最新文章:
對象