您好,登錄后才能下訂單哦!
and:遇假則假,所以前面為假就不執(zhí)行和判斷后面直接返回假;前面為真則繼續(xù)判斷執(zhí)行后面直到表達(dá)式結(jié)束或者出現(xiàn)假為止;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂(yōu) @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號(hào)):猿說(shuō)python @Github:www.github.com
@File:python_return.py @Time:2019/10/6 19:48 ? @Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """ ? def fun1(): ????# 所有條件都為真,返回最后一個(gè)值 ????return "21" and True ? def fun2(): ????# 檢測(cè)所有表達(dá)式,直到遇到假為止,并返回假 ????return 54 and 1 and True and 0 ? def fun3(): ????# 遇到真,繼續(xù)后面的判斷,直到遇到假為止,如果遇見(jiàn)假直接返回,不再繼續(xù)判斷 ????return 1 and True and False and 54 and 0 ? print(fun1()) print(fun2()) print(fun3()) |
輸出結(jié)果:
1 2 3 | True 0 False |
小敲門(mén):
1.如果有假的表達(dá)式:返回值為第一個(gè)假表達(dá)式的結(jié)果;
2.如果沒(méi)有假的表達(dá)式:返回值為最后一個(gè)真表達(dá)式的結(jié)果;
?
or:遇真則真,所以前面為真就不執(zhí)行和判斷后面;前面為假則繼續(xù)判斷執(zhí)行后面直到表達(dá)式結(jié)束或者出現(xiàn)真為止;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def fun1(): ????# 所有條件都為真,返回第一個(gè)真的表達(dá)式 ????return "21" or True ? def fun2(): ????# 所有條件都為假,直到遇到真為止,并返回真,沒(méi)有真則返回最后一個(gè)假 ????return "" or False or 0 ? def fun3(): ????# 直到遇到真為止,并返回真,不在繼續(xù)后面的判斷 ????return 0 or True or False or 54 or 0 ? print(fun1()) print(fun2()) print(fun3()) |
輸出結(jié)果:
1 2 3 | 21 0 True |
小敲門(mén):
1.如果有真的表達(dá)式:返回值為第一個(gè)真表達(dá)式的結(jié)果;
2.如果沒(méi)有真的表達(dá)式:返回值為最后一個(gè)假表達(dá)式的結(jié)果;
?
and和or配合使用:其實(shí)并沒(méi)有先后順序,表達(dá)式重前往后依次執(zhí)行,上一個(gè)表達(dá)式的結(jié)果作為下一個(gè)表達(dá)式的開(kāi)始;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | def fun1(): ????''' ????動(dòng)作分解: ? ????第一步:"21" and True??返回結(jié)果 True ????第二步:True or 1??返回結(jié)果 True ????注意第二步 True or 1 中的 True 是第一步返回的結(jié)果并不是表達(dá)式中的True ????''' ????return "21" and True or 1??#等價(jià):return (("21" and True) or 1) ? def fun2(): ????''' ????動(dòng)作分解: ? ????第一步:"" or False??返回結(jié)果 False ????第二步:False and 0??返回結(jié)果 False ????注意第二步 False and 0 中的 False 是第一步返回的結(jié)果并不是表達(dá)式中的 False ????''' ????return "" or False and 0 #等價(jià):return (("" or False) and 0) ? def fun3(): ????''' ????動(dòng)作分解: ? ????第一步:0 or True??返回結(jié)果 True ????第二步:True and False??返回結(jié)果 False ????第三步:False or 54??返回結(jié)果 54 ????第四步:54 and 0??返回結(jié)果 0 ????注意:上一步的結(jié)果作為下一步的開(kāi)始 ????''' ????return 0 or True and False or 54 and 0 #等價(jià):return ((((0 or True) and False) or 54) and 0) ? def fun4(): ????''' ????動(dòng)作分解: ? ????第一步:0 and True and False??返回結(jié)果 0 ????第二步:0 or 54??返回結(jié)果 54 ????第三步:54 and 0??返回結(jié)果 0 ????注意:上一步的結(jié)果作為下一步的開(kāi)始 ????''' ????return 0 and True and False or 54 and 0 #等價(jià):return (((0 and True and False) or 54) and 0) ? print(fun1()) print(fun2()) print(fun3()) print(fun4()) |
輸出結(jié)果:
1 2 3 4 | True False 0 0 |
?
其實(shí)作為一個(gè)普通函數(shù)直接返回字符串或者其他數(shù)據(jù)類(lèi)型就完了,為何非要這樣費(fèi)力不討好?學(xué)習(xí)學(xué)習(xí),學(xué)習(xí)是一個(gè)過(guò)程,我想我們應(yīng)該過(guò)程中成長(zhǎng),不然即使寫(xiě)了一萬(wàn)次hello world又有何用?return邏輯判斷表達(dá)式?/?字典推導(dǎo)式?/?列表推導(dǎo)式?都是在各種開(kāi)源項(xiàng)目中頻繁使用得寫(xiě)法,這往往也是編程水平的一種提現(xiàn)。
1.python函數(shù)
2.python匿名函數(shù)
3.python函數(shù)不定長(zhǎng)參數(shù)*argc,**kargcs
?
轉(zhuǎn)載請(qǐng)注明:猿說(shuō)Python???python return邏輯判斷表達(dá)式
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。