Python 裡 and or 的計算規則

2021-09-02 23:23:31 字數 1413 閱讀 7554

引子:

print 『』 or 5 or 0

5print 5 and 4

4print 『』 or 5 or 0 and 4

5

出現以上情況的原因是什麼呢?

bool(』』) == false bool(0) == false

所有變數的位操作都是通過強制轉換成bool實現的,並且表示式的值是從左到右第乙個能夠確定表示式的值的變數。

例如 (『』 or 5 or 0)==(false or true or false),當遇到第乙個true的時候,表示式的值等於true這個變數(5)的值,並且不會再去管後面是什麼,所以返回5.

在純and語句中,如果每乙個表示式都不是假的話,那麼返回最後乙個,因為需要一直匹配直到最後乙個。如果有乙個是假,那麼返回假

在純or語句中,只要有乙個表示式不是假的話,那麼就返回這個表示式的值。只有所有都是假,才返回假

在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

其二, 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)

總結一句話就是:無論操作符是哪個,最後的結果一定是按照計算順序能最快判斷出結果的那個表示式決定的

Python中 and,or 的計算規則

1.在純and語句中,如果每乙個表示式都不是假的話,那麼返回最後乙個,因為需要一直匹配直到最後乙個。如果有乙個是假,那麼返回假 2.在純or語句中,只要有乙個表示式不是假的話,那麼就返回這個表示式的值。只有所有都是假,才返回假 3.在or和and語句比較難表達,總而言之,碰到and就往後匹配,碰到o...

NGINX實現IF語句裡的AND,OR多重判斷

nginx實現if語句裡的and,or多重判斷 一 nginx rewrite規則相關指令有if rewrite set return break等 1.其中rewrite是最關鍵的指令。乙個簡單的nginx rewrite規則語法如下 rewrite b html play.php?video 1...

python中的and or技巧

a first b second 1 and a or b first 0 and a or b second 語言中的 bool a b 表示式。整個表示式從左到右進行演算,所以先進行 and 表示式的演算。1 and first 演算值為 first 然後 first or second 的演算...