【廖雪峰python入門筆記】布林運算和短路計算
1. 布林運算
布林型別只有True和False兩種值,但是布林型別有以下幾種運算:
1.1 與運算:
只有兩個布林值都為 True 時,計算結果才為 True。
True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False
1.2 或運算:
只要有一個布林值為 True,計算結果就是 True。
True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False
1.3 非運算:
把True變為False,或者把False變為True:
not True # ==> False
not False # ==> True
布林運算在計算機中用來做條件判斷,根據計算結果為True或者False,計算機可以自動執行不同的後續程式碼。
2. 短路計算
在Python中,布林型別還可以與其他資料型別做 and、or和not運算,請看下面的程式碼:
a = True
print(a and 'a=T' or 'a=F')
計算結果不是布林型別,而是字串 a=T
,這是為什麼呢?
因為Python把0
、空字串''
和None
看成 False
,其他數值
和非空字串
都看成 True
,所以:
True and ‘a=T’ 計算結果是 ‘a=T’
繼續計算 ‘a=T’ or ‘a=F’ 計算結果還是 ‘a=T’
要解釋上述結果,又涉及到 and 和 or 運算的一條重要法則:短路計算
。
在計算 a and b 時,如果 a 是 False,則根據與運演算法則,整個結果必定為 False,因此返回 a;如果 a 是 True,則整個計算結果必定取決與 b,因此返回 b。
在計算 a or b 時,如果 a 是 True,則根據或運演算法則,整個計算結果必定為 True,因此返回 a;如果 a 是 False,則整個計算結果必定取決於 b,因此返回 b。
所以Python直譯器在做布林運算
時,只要能提前確定計算結果
,它就不會往後算了,直接返回結果。
例項
請執行如下程式碼,並解釋列印的結果:
a = 'python'
print('hello,', a or 'world')
b = ''
print('hello,', b or 'world')
即判斷hello, 後輸出的是什麼。
我們知道a or b 會發生短路計算:
a True 則輸出a ,a False 則輸出b,所以結果為:
hello, python
hello, world
相關文章
- 【廖雪峰python入門筆記】break和continuePython筆記
- 【廖雪峰python入門筆記】dictPython筆記
- 【廖雪峰python入門筆記】setPython筆記
- 【廖雪峰python入門筆記】切片Python筆記
- 【廖雪峰python入門筆記】迭代Python筆記
- 【廖雪峰python入門筆記】函式Python筆記函式
- 【廖雪峰python入門筆記】變數Python筆記變數
- 【廖雪峰python入門筆記】if語句Python筆記
- 【廖雪峰python入門筆記】for迴圈Python筆記
- 【廖雪峰python入門筆記】列表生成式Python筆記
- 【廖雪峰python入門筆記】list_建立Python筆記
- 【廖雪峰python入門筆記】tuple_建立Python筆記
- 【廖雪峰python入門筆記】while迴圈Python筆記While
- 【廖雪峰python入門筆記】多重迴圈Python筆記
- 【廖雪峰python入門筆記】raw 字串和多行字串表示Python筆記字串
- 【廖雪峰python入門筆記】整數和浮點數Python筆記
- 【廖雪峰python入門筆記】list新增元素_append()和insert()Python筆記APP
- 【廖雪峰python入門筆記】list刪除元素_pop()Python筆記
- 【廖雪峰python入門筆記】list_替換元素Python筆記
- 【廖雪峰python入門筆記】tuple_“元素可變”Python筆記
- 【廖雪峰python入門筆記】tuple_建立單元素Python筆記
- C#快速入門教程(10)——布林型別與布林運算C#型別
- 【廖雪峰python入門筆記】字串_轉義字元的使用Python筆記字串字元
- 【廖雪峰python入門筆記】Unicode編碼_UnicodeDecodeError處理Python筆記UnicodeError
- 【廖雪峰python入門筆記】list_按照索引訪問Python筆記索引
- 【廖雪峰python入門筆記】list_倒序訪問Python筆記
- Boost 矩形布林運算
- 【廖雪峰python進階筆記】模組Python筆記
- 【廖雪峰python進階筆記】定製類Python筆記
- 【廖雪峰python進階筆記】物件導向程式設計Python筆記物件程式設計
- 【廖雪峰python進階筆記】函數語言程式設計Python筆記函數程式設計
- 【廖雪峰python進階筆記】類的繼承Python筆記繼承
- 20190228 學習筆記——廖雪峰 git筆記Git
- 跟著廖雪峰學python 005Python
- 廖雪峰Git學習筆記1-Git簡介Git筆記
- Python廖雪峰13個案例講解分析帶你全面入門人工智慧Python人工智慧
- vue 基礎入門筆記 19:計算屬性和偵聽屬性Vue筆記
- 學習筆記 -《量子計算與程式設計入門》- 量子計算機硬體基礎筆記程式設計計算機