[英]I need to parametrize a method in Python
我想做以下事情:
def apply_indicator(df, indicator="rsi"):
print("first one")
def apply_indicator(df, indicator="ichimoku"):
print("second one")
以便indicator
關鍵字參數化該方法
我嘗試了 if 語句超過指標參數,雖然這是假的。
方法重載也不是解決方案。 Python 似乎混淆了兩個 function。
您似乎在嘗試對 arguments 執行 Haskell 樣式的模式匹配。例如,以下內容對 Haskell 有效:
apply_indicator df "rsi" = 1
apply_indicator df "ichimoku" = 2
然后apply_indicator something "rsi" == 1
和apply_indicator somethign "ichimoku" == 2
。
Python不支持function這種定義。 如果你想要一個 function,你需要在 function內部進行匹配,主要是簡單地使用if
語句:
def apply_indicator(df, indicator):
if indicator == "rsi":
print("first one")
elif indicator == "ichimoku":
print("second one")
但是,基於對其 arguments 之一的顯式檢查執行兩種不同操作的 function 是一種反模式。 您的調用者已經必須決定將什么參數傳遞給apply_indicator
; 他們可以很容易地決定調用兩個函數中的哪一個。
def apply_rsi(df):
print("first one")
def apply_ichimoku(df):
print("second one")
如果您覺得需要通過給定參數“索引”您的參數集,您可以使用將預期參數映射到正確 function 的dict
來實現:
d = {"rsi": apply_rsi, "ichimoku": apply_ichimoku}
x = ... # rsi or ichimoku
d[x](some_df)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.