我有一個函數我想根據模式採取不同的形式。我應該在if語句中包含定義還是應該將if放入定義中?Python的定義內,如果功能塊或反之亦然
# Case 1
if mode == 1:
def f(x):
return x + 5
else:
def f(x):
return x - 5
# Case 2
def f(x):
if mode == 1:
return x + 5
else:
return x - 5
我已經在過去和靜態代碼分析工具似乎沒有抱怨。所以我想知道是否有Pythonic推薦?
編輯:從迄今爲止的意見,這兩種情況似乎可以接受的。這取決於用例。如果模式旨在保持不變,則優先考慮情況1。如果沒有,那麼情況2.
EDIT2:這個問題實際上出現了,因爲我在寫一個函數。它採用模式作爲輸入,取決於模式執行類似的操作,除了它使用單獨定義在這些操作的函數內的不同子功能。由於子功能在功能運行期間保持不變,因此情況1似乎更合適。
EDIT3:更正:在過去,我相信這是pylint的,這是不舒服的情況1.這些天來,我用PyCharm和似乎沒有標誌沒有任何問題與案例1
如果你1只檢查一次條件。 – vaultah
第二種似乎更通用。例如,如果模式在某個點發生了變化,該怎麼辦?案例2仍然在這裏工作,而案例1不會。 – arshajii
你打算如何使用該功能?你的兩個例子給出不同的行爲。在第一種情況下,你決定一次,然後你得到的功能就被修復了。在情況2中,每次調用函數時都要重新做出決定。 – BrenBarn