【原】python語言的 and-or 常常被用來實現類C語言中的三元運算符 : ? ,
更為騷氣的寫法是 xxx and xxx or xxx and xxx or xxx,這樣就可以可以做到一行實現多個表達式啦。
Code:
(1) def Judge(a):
if a > 10:
return "big"
elif a > 5:
return "middle"
else:
return "small"
(2) def judge (b) :
return b > 10 and "big" or b > 5 and "middle" or "small"
(1)和(2)所實現的效果是一樣的
但要注意的是 and-or 并不完全等價于三元運算符,因為a and b or c,
如果b是個假值,那么就將返回c(電腦比較懶惰- -!)
不過有技巧能夠實現:
def choose(bool, a, b):
return (bool and [a] or [b])[0]
如果bool為真就返回[a], 不然就返回[b]. 真如上面說的 電腦很懶惰 對于and ,它會先
判斷and前的值是否為真,如果為真, 那么xxx and xxx 就為真。
return結尾的[0]的作用是:使結果以數字輸出而不是以列表輸出 結果: 加[0] 7 不加[0] [7]
例:choose(True, 0, 6)
>>> 0
choose(True, 7, 6)
>>>7
choose(False, 0, 6)
>>>6
choose(False, 7, 6)
>>>6
如果不加[0]
choose(True, 0, 6)
>>>[0]
就這些了
人生苦短 我用python QAQ
加油吧!!!
參考地址: http://python.jobbole.com/81233/
新聞熱點
疑難解答