引子:
print('' or 5 or 0) # 5 print(5 and 4) # 4 print('' or 5 or 0 and 4) # 5
出現以上情況的原因是什么呢?
print(bool('')) # False print(bool(0)) # False
print(False and True) # False print(False and False) # False print(True and True) # True print(True and False) # False print(False or True) # True print(False or False) # False print(True or True) # True print(True or False) # True
2. 在純or語句中, 只要有一個表達式不是假的話,那么就返回這個表達式的值。只有所有都是假,才返回假
3. 在or和and語句比較難表達,總而言之,碰到and就往后匹配,碰到or如果or左邊的為真,那么就返回or左邊的那個值,如果or左邊為假,繼續匹配or右邊的參數。
(False or 1) 輸出1
(1 or False) 輸出1
(True or 1)輸出前者
(1 or True) 輸出前者
(True and 1) 輸出后者
(1 and True) 輸出后者
(False and 1)輸出False
(1 and False) 輸出False
對python而言
其一, 在不加括號時候, and優先級大於or
and運算有假則取假,如果沒有假則取最后一個真(需要保證為真,則需要運算打最后一個真)
or運算會取從左到右的第一個真,若果沒有就取假
其二, x or y 的值只可能是x或y. x為真就是x, x為假就是y
第三, x and y 的值只可能是x或y. x為真就是y, x為假就是x
顯然,
對於, 1 or 5 and 4: 先算5 and 4, 5為真, 值為4. 再算1 or 4, 1 為真,值為1
對於, (1 or 5) and 4: 先算1 or 5, 1為真, 值為1. 再算1 and 4, 1為真,值為4
在Python中,空字符串為假,非空字符串為真。非零的數為真。
數字和字符串之間、字符串之間的邏輯操作規律是:
對於and操作符:
只要左邊的表達式為真,整個表達式返回的值是右邊表達式的值,否則,返回左邊表達式的值
對於or操作符:
只要兩邊的表達式為真,整個表達式的結果是左邊表達式的值。
如果是一真一假,返回真值表達式的值
如果兩個都是假,比如空值和0,返回的是右邊的值。(空值或0)
總結一句話就是:無論操作符是哪個,最后的結果一定是按照計算順序能最快判斷出結果的那個表達式決定的
轉載自: https://www.cnblogs.com/huchong/p/7535542.html