偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

在Python中妙用短路機(jī)制

開發(fā)
Python中的短路機(jī)制非常有用,跟很多其他編程語言中的短路機(jī)制作用類似,接下來讓我們通過幾個(gè)簡(jiǎn)單的例子總結(jié)Python中可用的幾種短路機(jī)制。

不同于物理學(xué)中的「短路」(Short circuit)那般危險(xiǎn),Python中的短路機(jī)制非常有用,跟很多其他編程語言中的短路機(jī)制作用類似,一句話概括就是一段條件判斷表達(dá)式在從左到右按順序執(zhí)行的過程中,提前確定了表達(dá)式的True/False結(jié)果,從而終止右邊剩余的運(yùn)算。

讓我們通過幾個(gè)簡(jiǎn)單的例子總結(jié)Python中可用的幾種短路機(jī)制:

X or Y

X or Y是最常用的短路機(jī)制,我們都知道只要X或Y中至少有一個(gè)為True時(shí),整段判斷表達(dá)式就為True,譬如下面的例子中,本來1 / 0會(huì)觸發(fā)ZeroDivisionError: division by zero錯(cuò)誤,但因?yàn)閛r左邊的部分已經(jīng)邏輯判斷為True,Python的短路機(jī)制就會(huì)停止后續(xù)的執(zhí)行,直接返回or左邊的結(jié)果:

而當(dāng)or左邊部分邏輯判斷為False時(shí),則會(huì)返回右邊部分的結(jié)果:

X and Y

類似X or Y的機(jī)制,X and Y會(huì)在X邏輯判斷為False時(shí)提前終止后續(xù)的運(yùn)算,只返回X部分的結(jié)果:

any()

Python中的any()函數(shù)用于接受序列形式的多個(gè)等待邏輯判斷的部分,并在序列中至少有一個(gè)部分邏輯判斷為True時(shí)返回True。

而只要any()按順序遇到第一個(gè)邏輯判斷為True的結(jié)果,也會(huì)觸發(fā)短路,正如下面的例子中只花費(fèi)3秒就完成了判斷過程,因?yàn)檠h(huán)到1時(shí)觸發(fā)了短路:

all()

Python中的all()函數(shù)類似any(),會(huì)在傳入序列中每個(gè)部分邏輯判斷均為True時(shí)返回True,其也會(huì)在按順序遇到第一個(gè)False時(shí)終止后續(xù)運(yùn)算:

「比較運(yùn)算符」

Python中用于數(shù)值大小比較的各個(gè)運(yùn)算符也具有短路機(jī)制,從左到右,一旦執(zhí)行到判斷結(jié)果為False的部分都會(huì)終止運(yùn)算:

「實(shí)際使用示例」

當(dāng)我們的代碼中涉及到條件判斷,且參與條件判斷的值具有一定的「運(yùn)算成本」時(shí),就可以靈活運(yùn)用短路機(jī)制來提升運(yùn)行效率,譬如我們需要根據(jù)用戶id信息向多個(gè)接口查詢其權(quán)限,全部滿足時(shí)將其標(biāo)記為“超級(jí)權(quán)限”,就可以利用到短路機(jī)制。

這里我們隨意寫幾個(gè)具有時(shí)間成本的函數(shù)作為接口示意:

def api1(id_):

time.sleep(1)

return id_ in ['admin1', 'admin2']

def api2(id_):

time.sleep(1)

return id_ in ['admin1', 'admin2', 'su1', 'su2']

def api3(id_):

time.sleep(1)

return id_ not in ['ban1', 'ban2', 'ban3']

利用短路機(jī)制在用戶第一次沒有滿足條件時(shí)就終止后續(xù)判斷,寫法簡(jiǎn)潔:

責(zé)任編輯:趙寧寧 來源: Python大數(shù)據(jù)分析
相關(guān)推薦

2017-01-12 15:42:53

HookPythonImport

2010-09-08 15:16:46

clearCSS

2010-09-09 16:54:05

CSSclear

2024-05-28 12:25:33

Pythonglobals?函數(shù)

2021-03-23 08:21:06

GolangPython字符

2010-08-30 16:02:06

CSSclear

2021-02-16 08:16:09

適配器模式MybatisJava

2024-12-19 09:00:00

字典視圖對(duì)象Python

2024-12-30 08:02:40

2021-06-29 07:04:38

Nacos服務(wù)配置

2023-02-24 14:52:20

Redis存儲(chǔ)開發(fā)

2010-09-10 15:16:51

CSSdisplay

2010-03-10 17:57:54

Python編程語言

2021-10-20 07:36:03

Python構(gòu)造方法

2023-05-22 10:40:22

WeakMapsMaps

2010-09-10 13:25:22

2025-03-13 13:00:00

架構(gòu)DNSIP

2025-04-28 09:00:00

DNS架構(gòu)網(wǎng)絡(luò)

2009-06-03 09:01:41

微軟Windows 7操作系統(tǒng)

2009-05-24 15:03:34

加密文件夾用戶
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)