Python解惑:True與False,帶你跳出大坑

Python 中常用的數據類型bool(布爾)類型的實例對象(值)就兩個,真和假,分別用True和False表示。在if 條件判斷和while 語句中經常用到,不過在Python2.x 中,True 和False 卻有著奇怪的用法,就是真假可以相互被替換,先看下面代碼:

1.>>> True

2.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才執行代碼塊中的語句。究竟是什麼原因呢?

解惑

在Python2.7 中,True和False是兩個內建(built-in)變量,內建變量和普通自定義的變量如a, b, c一樣可以被重新賦值,因此我們可以把這兩個變量進行任意的賦值,比如:

True = 2

False = "abc"

甚至是True和False進行互換

tmp = True

True = False

False = tmp

互換後變量True指向了假對象,False指向了真對象:

Python解惑:True與False,帶你跳出大坑

因此,在Python 中我們不要隨意給True 和False 賦新的值,否則程序代碼邏輯都會亂套了。這也算是Python2.x 中一個坑,不過在Python3.x 中,終於把這個兩變量變成了關鍵字,也就是說,程序員再也沒法給這兩變量賦新的值了,從此True永遠指向真對象,False指向假對象,永不分離。用keyword模塊檢測True 和False 是否為關鍵字。

>>> import keyword

>>> keyword.iskeyword('True')

False

最後

小編近幾年在學習Python!對於想學習Python的朋友們,我想說:很多人學了一個星期就放棄了,為什麼呢?其實沒有好的學習資料給你去學習,你們是很難堅持的,這是小編收集的Python入門學習資料!如下圖回覆01即可獲得!

Python解惑:True與False,帶你跳出大坑



分享到:


相關文章: