浙江11选5怎么破解版:自學Python教程【第四十九節】and-or技巧

浙江11选5任3遗漏 www.ehxis.com 歡迎大家來到自學Python教室,前面我們學習了Python面向對象的相關內容,對于面向過程和面向對象大家還是要多進行對比分析,了解面向對象的方法的優勢,并在實戰中多進行應用!今天我們介紹一個Python中的小技巧:and-or,了解一下吧:

自學Python教程【第四十九節】and-or技巧

看下面這段代碼:

a = "heaven" 
b = "hell"
c = True and a or b
print c
d = False and a or b
print d

輸出:

heaven 

hell

結果很奇怪是不是?

表達式從左往右運算,1和”heaven”做and的結果是”heaven”,再與”hell”做or的結果是”heaven”;0和”heaven”做and的結果是0,再與”hell”做or的結果是”hell”。

拋開繞人的and和or的邏輯,你只需記住,在一個bool and a or b語句中,當bool條件為真時,結果是a;當bool條件為假時,結果是b。

有學過c/c++的同學應該會發現,這和bool?a:b表達式很像。

有了它,原本需要一個if-else語句表述的邏輯:

if a > 0: 
print "big"
else:
print "small"

就可以直接寫成:

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

然而不幸的是,如果直接這么用,有一天你會踩到坑的。和c語言中的?:表達式不同,這里的and、or語句是利用了Python中的邏輯運算實現的。當a本身是個假值(如0,””)時,結果就不會像你期望的那樣。

比如:

a = ""

b = "hell"

c = True and a or b

print c

得到的結果不是””而是”hell”。因為””和”hell”做and的結果是”hell”。

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

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

由于[a]是一個非空列表,所以它決不會為假。即使a是0或者”或者其它假值,列表[a]也為真,因為它有一個元素。

在兩個常量值進行選擇時,and-or會讓你的代碼更簡單。但如果你覺得這個技巧帶來的副作用已經讓你頭大了,沒關系,用if-else可以做相同的事情。不過在Python的某些情況下,你可能沒法使用if語句,比如lambda函數中,這時候你可能就需要and-or的幫助了。

什么是lambda函數?呵呵,這是python的高階玩法,你去了解一下吧!

恭喜你在Python自學的道路上又堅持了一天,今天為大家分享的Python教程:and-or小技巧,你學會了嗎?更多Python教程盡在馬哥浙江11选5任3遗漏官網,敬請關注!

好啦,今天的分享到這里就結束了,希望大家能夠持續關注浙江11选5任3遗漏官網,每天都會有大量優質內容與大家分享!免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code