亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

你知道Python學(xué)習(xí)中and-or的使用技巧嗎?

今天馬哥教育要跟大家分享的文章是Python學(xué)習(xí)中and-or的使用技巧,and 和 or 是Python的兩個(gè)邏輯運(yùn)算符,可以使用and 和or來(lái)進(jìn)行多個(gè)條件內(nèi)容的判斷,Python入門新手和正在Python學(xué)習(xí)的小伙伴快來(lái)看一看吧,希望能夠?qū)Υ蠹矣兴鶐椭?!

看下面這段代碼:

a = "heaven"

b = "hell"

c = True and a or b

print c

d = False and a or b

print d

輸出:

heaven

hell

結(jié)果很奇怪是不是?

表達(dá)式從左往右運(yùn)算,1和"heaven"做and的結(jié)果是"heaven",再與"hell"做or的結(jié)果是"heaven";0和"heaven"做and的結(jié)果是0,再與"hell"做or的結(jié)果是"hell"。

拋開繞人的and和or的邏輯,你只需記住,在一個(gè)bool and a or b語(yǔ)句中,當(dāng)bool條件為真時(shí),結(jié)果是a;當(dāng)bool條件為假時(shí),結(jié)果是b。

有學(xué)過(guò)c/c++的同學(xué)應(yīng)該會(huì)發(fā)現(xiàn),這和bool?a:b表達(dá)式很像。

有了它,原本需要一個(gè)if-else語(yǔ)句表述的邏輯:

if a > 0:

print "big"

else:

print "small"

就可以直接寫成:

print (a > 0) and "big" or "small"

然而不幸的是,如果直接這么用,有一天你會(huì)踩到坑的。和c語(yǔ)言中的?:表達(dá)式不同,這里的and、or語(yǔ)句是利用了Python中的邏輯運(yùn)算實(shí)現(xiàn)的。當(dāng)a本身是個(gè)假值(如0,"")時(shí),結(jié)果就不會(huì)像你期望的那樣。

比如:

a = ""

b = "hell"

c = True and a or b

print c

得到的結(jié)果不是""而是"hell"。因?yàn)?"和"hell"做and的結(jié)果是"hell"。

所以,and-or真正的技巧在于,確保a的值不會(huì)為假。最常用的方式是使 a 成為 [a] 、 b 成為 [b],然后使用返回值列表的第一個(gè)元素:

a = ""

b = "hell"

c = (True and [a] or [b])[0]

print c

由于[a]是一個(gè)非空列表,所以它決不會(huì)為假。即使a是0或者''或者其它假值,列表[a]也為真,因?yàn)樗幸粋€(gè)元素。

在兩個(gè)常量值進(jìn)行選擇時(shí),and-or會(huì)讓你的代碼更簡(jiǎn)單。但如果你覺(jué)得這個(gè)技巧帶來(lái)的副作用已經(jīng)讓你頭大了,沒(méi)關(guān)系,用if-else可以做相同的事情。不過(guò)在Python的某些情況下,你可能沒(méi)法使用if語(yǔ)句,比如lambda函數(shù)中,這時(shí)候你可能就需要and-or的幫助了。

什么是lambda函數(shù)?呵呵,這是Python的高階玩法,你去了解一下吧!

恭喜你在Python的道路上又堅(jiān)持了一天,以上就是馬哥教育今天為大家分享的關(guān)于Python學(xué)習(xí)中and-or使用技巧的文章,希望本篇文章能夠?qū)φ?Python學(xué)習(xí)?和從事Python相關(guān)工作的小伙伴們有所幫助,想要了解更多相關(guān)知識(shí)記得關(guān)注馬哥教育官網(wǎng)。最后祝愿小伙伴們工作順利!

聲明:文章來(lái)源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!