Python基础教程:内置类型之真值测试
python中任何對象都能直接進行真假值的測試,用于if或者while語句的條件判斷,也可以做為布爾邏輯運算符的操作數
python中任何對象都能直接進行真假值的測試,而不需要額外的類型轉換
這一點是和其它語言不一樣的。比如C#,一個非bool的對象,如果要進行邏輯判斷則必須先強制進行類型轉換、或者調用對象的自身判斷方法進行判斷。
var message = " "; if (message.IsNullOrEmpty()){... }而python中可以直接對對象進行邏輯判斷無需類型轉換
message = " " if message :pass對象的真假值測試的結果,要么是True,要么是False
布爾類型的值只有True和False,所以對象是不管什么類型,其真假值的測試結果必然是True和False中的一個。在python中真假值的測試結果可以通過調用內置函數bool來確認。
>>> bool(' ') True >>> bool('') False以下的內置對象會被視為False值
- None
- False
- 任何數值類型的零,例如,0、0.0、0j
- 任何空序列,例如,”、()、[]
- 任何空映射,例如,{}
內置對象除了以上值之外的都是真值
常量NotImplemented、Ellipsis、True是真值
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> bool(NotImplemented) True >>> bool(Ellipsis) True >>> bool(True) True對于用戶自定義的類,其真假值取決于該類有沒有定義__bool__()或__len__(),以及這兩個方法返回的值
如果自定義類未沒有定義__bool__()和__len__()方法,則該類的實例對象的真假值測試總是True。
>>> class A:pass>>> a = A() >>> bool(a) True如果自定義類只定義了__bool__()方法,則該類的實例對象的真假值測試結果為__bool__()方法返回的結果
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> class B():def __init__(self,name):self.name = namedef __bool__(self):return bool(self.name)>>> b1 = B('') >>> bool(b1) False >>> b2 = B('jay') >>> bool(b2) True如果自定義類只定義了__len__()方法,則該類的實例對象的真假值測試結果為__len__()方法返回的結果是否為整數0
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> class C():def __init__(self,name):self.name = namedef __len__(self):return len(self.name)>>> c1 = C('') >>> bool(c1) False >>> c2 = C('jay') >>> bool(c2) True如果自定義類同時定義了__bool__()和__len__()方法,則該類的實例對象的真假值測試結果為__bool__()方法返回的結果,即__bool__()方法優先級高于__len__()方法。
>>> class D():def __len__(self):return 1def __bool__(self):return False>>> d = D() >>> bool(d) False>>> class E():def __len__(self):return 0def __bool__(self):return True>>> e = E() >>> bool(e) True總結
以上是生活随笔為你收集整理的Python基础教程:内置类型之真值测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础教程:内置类型之比较
- 下一篇: Python基础教程: import与f