您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何理解Python中 and 和 or 運(yùn)算短路邏輯,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
短路邏輯規(guī)則如下:
表達(dá)式從左至右運(yùn)算,若 or 的左側(cè)邏輯值為 True ,則短路 or 后所有的表達(dá)式(不管是 and 還是 or),直接輸出 or 左側(cè)表達(dá)式 。若 or 的左側(cè)邏輯值為 False ,則輸出or右側(cè)的表達(dá)式,不論其后表達(dá)式是真是假,整個表達(dá)式結(jié)果即為其后表達(dá)式的結(jié)果。
表達(dá)式從左至右運(yùn)算,若 and 的左側(cè)邏輯值為 False ,則短路其后所有 and 表達(dá)式,直到有 or 出現(xiàn),輸出 and 左側(cè)表達(dá)式到 or 的左側(cè),參與接下來的邏輯運(yùn)算。若 and 的左側(cè)邏輯值為 True,則輸出其后的表達(dá)式,不論其后表達(dá)式是真是假,整個表達(dá)式結(jié)果即為其后表達(dá)式的結(jié)果
若 or 的左側(cè)為 False ,或者 and 的左側(cè)為 True 則不能使用短路邏輯。
注意:
1、在Python中and的優(yōu)先級是大于or的,而且and和or都是會返回值的并且不轉(zhuǎn)換為True和False。當(dāng)not和and及or在一起運(yùn)算時,優(yōu)先級為是not>and>or
2、在Python中,None、任何數(shù)值類型中的0、空字符串“”、空元組()、空列表[]、空字典{}都被當(dāng)作False,還有自定義類型,如果實現(xiàn)了 __ nonzero __ () 或 __ len __ () 方法且方法返回 0 或False,則其實例也被當(dāng)作False,其他對象均為True。
下面是最簡單的邏輯運(yùn)算:
True
and True
==> True
True
or True
==> True
True
and False
==> False
True
or False
==> True
False and True
==> False
False or True
==> True
False and False
==> False
False or False
==> False
接下來我們再舉一個具體的例子:
先來定義一組函數(shù):
1>
def a():
2>
print ('A')
3>
return 1
4>
def b():
5>
print ('B')
6>
return 1
7>
def c():
8>
print ('C')
9>
return []
10>
def d():
11>
print ('D')
12>
return []
13>
def e():
14>
print ('E')
15>
return 1
例1:
17>
if a()
and b()
and c()
and d()
and e():
18>
print ('ok')
#顯示結(jié)果如下
A
a() 為假 ,其后均為 and 語句,全部短路,最終只返回 a() 的表達(dá)式。記住,所有被短路的表達(dá)式均不會被輸出。所以,此處僅僅打印 A
例2:
17>
if a()
and b()
and c()
and d()
and e():
18>
print ('ok')
#顯示結(jié)果如下
A
B
C
python 從左至右先執(zhí)行 a() ,a() 返回的邏輯值為 True,后面是 and 語句,所以不能短路其后,繼續(xù)與 b() 進(jìn)行邏輯運(yùn)算,a() and b() 輸出 b() 的邏輯值 True,接著與 c() 進(jìn)行邏輯運(yùn)算,b() and c() 輸出 c() 的邏輯值 False,而其后均為 and 語句, 則全部短路,最終只打印了 A B C 。
例3:
17>
if a()
or b()
or c()
or d()
or e():
18>
print ('ok')
#顯示結(jié)果如下
A
Ok
#顯示結(jié)果如下
A
ok
a() 的邏輯值為 True ,其后均為 or 語句,全部短路,最終只打印了 A,而 if 語句為 True ,所以還要打印一個 ok。
例4:
17>
if a()
or b()
or c()
or d()
or e():
18>
print ('ok')
#顯示結(jié)果如下
A
B
C
Ok
python 從左至右先執(zhí)行 a() ,a() 返回的邏輯值為 False,后面是 or 語句,所以不能短路其后,繼續(xù)與 b() 進(jìn)行邏輯運(yùn)算,a() or b() 輸出 b() 的邏輯值 False,接著與 c() 進(jìn)行邏輯運(yùn)算,b() or c() 輸出 c() 的邏輯值 True,而其后為 or 語句, 則全部短路,最終只打印了 A B C ok。
例5:
26>
if a()
and b()
and
c()
and d()
or e()
and f()
or g()
and h():
27>
print ('ok')
#輸出結(jié)果如下:
A
E
F
Ok
別以為語句很長就很難,我們好好分析一下,從左至右,首先a() 的邏輯值為 False,其后到 or 語句為止有三個 and 語句: a() and b() and c() and d(),均被短路。只輸出 a(), 得到 a() or e() 為True,輸出 e() ,得 e() and F() 為 True ,輸出 f(), 其后接 or 語句,則短路其后所有。最終只打印了A E F ok 。
上述內(nèi)容就是如何理解Python中 and 和 or 運(yùn)算短路邏輯,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。