2016-02-26 130 views

回答

4

如果你正在尋找的函數返回的True只有一個或False,那麼你可以簡化這樣的:

def foo(): 
    return bool(condition1 and condition2) 

此複製正是您碼。

+0

嗨@mhawke,爲什麼需要施放? – snowbound

+0

請在我剛剛接受的答案中看到我的評論。您的代碼_explicitly_返回「真」或「假」。嵌套的'if'可以簡化爲'condition1和condition2',然而,如果'condition2'求值爲一個字符串,例如'condition1和condition2'將計算爲該字符串,而不是'True'。使用'bool() '確保此代碼與您的問題中的代碼產生相同的結果。 – mhawke

+0

@snowbound:您是否確實需要返回「True」或「False」中的一個是單獨的問題。我會說,一般來說,不需要使用'bool()',而是依賴於涉及的表達式的「真實性」。但是,在這種情況下,你的代碼是明確的,所以我的答案也是如此。 – mhawke

1

你可以把它簡化這樣的:

def foo: 
    if condition1 and condition2: 
     return True 
    else: 
     return False 
+1

我不同意。一般來說,你應該避免返回實際的布爾值,只是返回它是否滿足條件。 –

+0

@EddoHintoso:我想跟你有所不同。 OP的代碼_explicitly_返回「True」或「False」之一 - 就像這個代碼一樣。可能有條件,如「真」和「真理」會返回「真理」,而不是真或假。也許這些條件應該包含在'bool()'中。 – mhawke

2

或者更簡單:

def foo(): 
    return condition1 and condition2 
4

你可以把它簡化象下面這樣:

def foo: 
    return condition1 and condition2 

注意變量國旗不在任何地方使用,等等在這種情況下刪除它是完全正確的。

5

在這裏你去:

def foo(): 
    return bool(condition1 and condition2) 
+1

與OP的代碼有細微的差別,它不會只返回'True'或'False'中的一個。例如,如果'condition1 = 1'和'condition2 ='two'',那麼'(condition1和condition2)'就會變成「two」,而不是布爾型「True」。 – mhawke

+0

糟糕...我沒有想到這一點。編輯和upvoted你的回答 –