是否有更多的Pythonic方式來編寫以下函數?pythonic方式編寫級聯if語句
def foo():
flag = False
if condition1:
if condition2:
flag = True
return flag
是否有更多的Pythonic方式來編寫以下函數?pythonic方式編寫級聯if語句
def foo():
flag = False
if condition1:
if condition2:
flag = True
return flag
如果你正在尋找的函數返回的True
只有一個或False
,那麼你可以簡化這樣的:
def foo():
return bool(condition1 and condition2)
此複製正是您碼。
你可以把它簡化這樣的:
def foo:
if condition1 and condition2:
return True
else:
return False
我不同意。一般來說,你應該避免返回實際的布爾值,只是返回它是否滿足條件。 –
@EddoHintoso:我想跟你有所不同。 OP的代碼_explicitly_返回「True」或「False」之一 - 就像這個代碼一樣。可能有條件,如「真」和「真理」會返回「真理」,而不是真或假。也許這些條件應該包含在'bool()'中。 – mhawke
或者更簡單:
def foo():
return condition1 and condition2
你可以把它簡化象下面這樣:
def foo:
return condition1 and condition2
注意變量國旗不在任何地方使用,等等在這種情況下刪除它是完全正確的。
在這裏你去:
def foo():
return bool(condition1 and condition2)
與OP的代碼有細微的差別,它不會只返回'True'或'False'中的一個。例如,如果'condition1 = 1'和'condition2 ='two'',那麼'(condition1和condition2)'就會變成「two」,而不是布爾型「True」。 – mhawke
糟糕...我沒有想到這一點。編輯和upvoted你的回答 –
嗨@mhawke,爲什麼需要施放? – snowbound
請在我剛剛接受的答案中看到我的評論。您的代碼_explicitly_返回「真」或「假」。嵌套的'if'可以簡化爲'condition1和condition2',然而,如果'condition2'求值爲一個字符串,例如'condition1和condition2'將計算爲該字符串,而不是'True'。使用'bool() '確保此代碼與您的問題中的代碼產生相同的結果。 – mhawke
@snowbound:您是否確實需要返回「True」或「False」中的一個是單獨的問題。我會說,一般來說,不需要使用'bool()',而是依賴於涉及的表達式的「真實性」。但是,在這種情況下,你的代碼是明確的,所以我的答案也是如此。 – mhawke