溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python 里 and、or 的計(jì)算規(guī)則

發(fā)布時(shí)間:2020-05-31 00:27:44 來源:網(wǎng)絡(luò) 閱讀:201 作者:Python熱愛者 欄目:編程語言

引子:


Python 里 and、or 的計(jì)算規(guī)則

出現(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定的

舉例:

Python 里 and、or 的計(jì)算規(guī)則


向AI問一下細(xì)節(jié)

免責(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)容。

AI