我正在寻找当函数的签名稍有不同时在循环中调用函数的最简洁的方法。
我有150个要从库中调用的函数。目前,我遍历所有函数名称的列表,并按名称进行调用。这适用于前40个功能,但大约有10个具有略有不同的签名。我需要使用一个额外的参数来调用这些函数。
我无法更改它们本身的功能,就像它们来自库一样。
我想做的唯一方法是对照特殊功能列表进行检查,并分别处理它们。但是,我是python的新手,我敢肯定有更好的方法可以做到这一点。
如果我有办法始终传递额外的参数,而让普通函数忽略它,那也可以。
for indic_name in indic_function_name_list:
print('Working on', indic_name)
indic_function = getattr(talib.abstract, indic_name)
#This is the line that needs to have the extra arg
indic_res = indic_function(data_df)
if isinstance(indic_res, pd.DataFrame):
data_df.join(indic_res)
elif isinstance(indic_res, pd.Series):
data_df.join(indic_res.rename('new'))