簡體   English   中英

我需要在 Python 中參數化一個方法

[英]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" == 1apply_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM