我嘗試做以下事情:Python中使用函數,如果
myChain = myChain(a,b) if a & b else "do_nothing"
有沒有辦法做到這一點這樣?
或者我應該堅持平時:
if a & b:
myChain = myChain(a,b)
謝謝!
我嘗試做以下事情:Python中使用函數,如果
myChain = myChain(a,b) if a & b else "do_nothing"
有沒有辦法做到這一點這樣?
或者我應該堅持平時:
if a & b:
myChain = myChain(a,b)
謝謝!
如果你只是想辦法做你的第二個代碼塊中的一行,你可以刪除換行符:
if a & b: myChain = myChain(a,b)
如果你絕對不希望使用if
語句,你可以使用像您在第一個代碼塊中那樣執行條件表達式。但這是一種不尋常的方式。
myChain = myChain(a,b) if a & b else myChain
我想這取決於你要做什麼;你是否有意將「do_nothing」分配給myChain
?這就是兩者都可以做到的。如果這沒關係,那麼你很好 - 否則,可能會更喜歡
if a and b:
myNewChain = myChain(a, b) #why assign to the same name as the function/class?
else:
myNewChain = None
...或任何None
實際上應該是。
如果你正在使用流控制 - 它看起來像你可能是,給定字符串的名稱 - 通常不鼓勵這樣做,只是因爲當有三元運算符時人們期望看到賦值。無論這樣做是否存在實際問題,我都無法確定。
_「有沒有這樣做的方法?」_是的,做到這一點的方式就是你做到這一點。換句話說,你的第一個代碼塊是完全有效的語法。 (使用'&'而不是'和'有點不尋常,並且用局部變量遮蓋了myChain函數,但兩者都是合法的) – Kevin 2014-10-17 13:26:49
您在版本2中缺少'else'的情況,所以任何隨後對'myChain'的引用都將引用該函數,而不是*其結果(在相關說明中,**不給出相同的名稱)。 – jonrsharpe 2014-10-17 13:29:13