引子:
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、白堿灘網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、成都做商城網(wǎng)站、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為白堿灘等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
出現(xiàn)以上情況的原因是什么呢?
bool('') == False bool(0) == False
所有變量的位操作都是通過強制轉(zhuǎn)換成bool實現(xiàn)的,并且表達式的值是從左到右第一個能夠確定表達式的值的變量。
例如 (‘’ 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左邊為假,繼續(xù)匹配or右邊的參數(shù)。
(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優(yōu)先級大于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中,空字符串為假,非空字符串為真。非零的數(shù)為真。
數(shù)字和字符串之間、字符串之間的邏輯操作規(guī)律是:
對于and操作符:
只要左邊的表達式為真,整個表達式返回的值是右邊表達式的值,否則,返回左邊表達式的值
對于or操作符:
只要兩邊的表達式為真,整個表達式的結(jié)果是左邊表達式的值。
如果是一真一假,返回真值表達式的值
如果兩個都是假,比如空值和0,返回的是右邊的值。(空值或0)
總結(jié)一句話就是:無論操作符是哪個,最后的結(jié)果一定是按照計算順序能最快判斷出結(jié)果的那個表達式?jīng)Q定的
舉例: