我最近了解了一種撰寫 if-elif-else 的方法。例如:
a = 10
x = {a < 1: 100, a > 1: 200}.get(True, None)
等于:
a = 10
if a < 1:
x = 100
elif a > 1:
x = 200
else:
x = None
他們會得到相同的結果x = 200
這種新方法更優雅,所以我用它來替換下面的 if-elif-else 代碼:
i = 10
j = 0
class A:
a = 1
class B:
a = 2
if i:
x = A()
elif j:
x = B()
else:
x = None
至
i = 10
j = 0
class A:
a = 1
class B:
a = 2
x = {i: A(), j: B()}.get(True, None)
但是,它并沒有按我的意愿運行:
>>> x.a
None
在我看來,的輸出x.a應該是1因為i > 0.
這要怎么解釋?
uj5u.com熱心網友回復:
(不是直接回答你的問題)
我最近了解了一種撰寫 if-elif-else 的方法。
而不是:
a = 10
x = {a < 1: 100, a > 1: 200}.get(True, None)
更喜歡這個:
a = 10
x = 100 if a < 1 else 200 if a > 1 else None
哪個更全面,不是嗎?
uj5u.com熱心網友回復:
在 pythonTrue中等于1. 它們基本上是一樣的。當你說dict.get(True)你實際上是在說dict.get(1)。如果存在等于1的值,則回傳其值,否則None回傳。
在你的問題中:
i = 10
j = 0
x = {i: A(), j: B()}.get(True, None)
dictx沒有等于的鍵,1所以你得到None.
此外,更少的代碼并不總是意味著它更好。您應該更喜歡使用陳述句撰寫此代碼,if因為它更具可讀性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492686.html
