您好,登錄后才能下訂單哦!
引子:
出現(xiàn)以上情況的原因是什么呢?
bool('') == False bool(0) == False
所有變量的位操作都是通過強(qiáng)制轉(zhuǎn)換成bool實(shí)現(xiàn)的,并且表達(dá)式的值是從左到右第一個(gè)能夠確定表達(dá)式的值的變量。
例如 (‘’ or 5 or 0)==(False or True or False),當(dāng)遇到第一個(gè)True的時(shí)候,表達(dá)式的值等于True這個(gè)變量(5)的值,并且不會(huì)再去管后面是什么,所以返回5.
1. 在純and語句中,如果每一個(gè)表達(dá)式都不是假的話,那么返回最后一個(gè),因?yàn)樾枰恢逼ヅ渲钡阶詈笠粋€(gè)。如果有一個(gè)是假,那么返回假
2. 在純or語句中,只要有一個(gè)表達(dá)式不是假的話,那么就返回這個(gè)表達(dá)式的值。只有所有都是假,才返回假
3. 在or和and語句比較難表達(dá),總而言之,碰到and就往后匹配,碰到or如果or左邊的為真,那么就返回or左邊的那個(gè)值,如果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
對(duì)python而言
其一, 在不加括號(hào)時(shí)候,?and優(yōu)先級(jí)大于or
其二, x or y 的值只可能是x或y. x為真就是x, x為假就是y
第三, x and y 的值只可能是x或y. x為真就是y, x為假就是x
顯然,
對(duì)于, 1 or 5 and 4: 先算5 and 4, 5為真, 值為4. 再算1 or 4, 1 為真,值為1
對(duì)于, (1 or 5) and 4: 先算1 or 5, 1為真, 值為1. 再算1 and 4, 1為真,值為4
在Python中,空字符串為假,非空字符串為真。非零的數(shù)為真。
數(shù)字和字符串之間、字符串之間的邏輯操作規(guī)律是:
對(duì)于and操作符:
只要左邊的表達(dá)式為真,整個(gè)表達(dá)式返回的值是右邊表達(dá)式的值,否則,返回左邊表達(dá)式的值
對(duì)于or操作符:
只要兩邊的表達(dá)式為真,整個(gè)表達(dá)式的結(jié)果是左邊表達(dá)式的值。
如果是一真一假,返回真值表達(dá)式的值
如果兩個(gè)都是假,比如空值和0,返回的是右邊的值。(空值或0)
總結(jié)一句話就是:無論操作符是哪個(gè),最后的結(jié)果一定是按照計(jì)算順序能最快判斷出結(jié)果的那個(gè)表達(dá)式?jīng)Q定的
舉例:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。