Python數據類型--布爾型bool--真值--探究

 

博文內容簡介:

          1  Python中被作爲 假 的值   False, None, 0, "", (), [], {}

          2  Python中的bool類:bool類是int類的子類,內置的True和Flase是bool類的兩個實例

  拓展: JavaScript中真假值。


一 、Python中的真假值

在Python條件判斷中的被視爲假的值:False, None, 0, "", (), [], {} 。下面我們深入的探討一下Python中的“真值”:

真值,程序的流程控制中,選擇執行的時候就需要用到真值,真值又稱爲布爾值。這是以在真值的研究上有巨大貢獻的George Boole命名的。

維基百科:

由於喬治·布爾在符號邏輯運算中的特殊貢獻,很多計算機語言中將邏輯運算稱爲布爾運算,將其結果稱爲布爾值。

在Python中邏輯運算的結果都是布爾值。都能用Python中的標準真值:True/False 表示, 它們都是Python的內置數據類型:bool類的實例 (關於bool類的談論在下面的拓展中)

Python解釋器將下面的值視爲假: False, None, 0, "", (), [], {}

  1. 標準值Flase和None
  2. 數值類型的0:整型(int)、浮點型(float)、複數(complex)的0值;0, 0.0 
  3. 空序列:空字符串 、 空元組 、空列表
  4. 空映射:如空字典

除了上面的這些值之外,其他值都將被解釋器視爲真。

>>> not None
True
>>> not 0
True
>>> not []
True
>>> not ''
True

 

二、Python中的bool類

我們看一下官方的解釋:

class bool(int):
    """
    bool(x) -> bool
    
    Returns True when the argument x is true, False otherwise.
    The builtins True and False are the only two instances of the class bool.
    The class bool is a subclass of the class int, and cannot be subclassed.
    """

Python內置的True和Flase是bool類的兩個實例,bool類的是int類的一個子類。

使用bool()來對值進行“強制類型轉換”可以測試這些值的真假如下:

>>> bool(0)
False
>>> bool([])
False

在條件判斷的時候,我們不必進行這樣的顯式轉換,Python會自動進行隱式的轉換爲布爾值,因此我們能直接將任何值作爲判斷表達式。

注意:容易讓人弄混的是,這些‘假值’並不等於False, Python隱式的類型轉換纔是將這些值視爲假:

>>> [] == False
False

 Python中True和False本質:在C語言中標準真值:0,1 ;一切的非0數都被視爲真 ;其實CPython中,Python中的True和Flase不過就是C語言中 1 和 0 的別名。

 

>>> False + True + True
2  
>>> False == 0
True
>>> True == 1
True 

拓展:

js中的‘假’: js中標準真值是:true 和 false (boolean類型),被視爲假的6個值分別是: 0, '', null, undefined, NaN 和 false,其餘的值都被視爲真:如 {}, []等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章