您好,登錄后才能下訂單哦!
引子:
出現以上情況的原因是什么呢?
bool('') == False bool(0) == False
所有變量的位操作都是通過強制轉換成bool實現的,并且表達式的值是從左到右第一個能夠確定表達式的值的變量。
例如 (‘’ or 5 or 0)==(False or True or False),當遇到第一個True的時候,表達式的值等于True這個變量(5)的值,并且不會再去管后面是什么,所以返回5.
1. 在純and語句中,如果每一個表達式都不是假的話,那么返回最后一個,因為需要一直匹配直到最后一個。如果有一個是假,那么返回假
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
其二, 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)
總結一句話就是:無論操作符是哪個,最后的結果一定是按照計算順序能最快判斷出結果的那個表達式決定的
舉例:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。