python - 当需要 args、kwargs 时仅使用 kwargs 调用函数
问题描述
我正在围绕 TA-lib 编写一个包装器,以将函数作为管道的一部分来调用。一些函数具有预期和可选参数。我希望简单地使用疣并映射命名参数,但它似乎只是映射预期参数而不是映射可选参数。
import pandas as pd
from talib import abstract
class TALibAugments():
"""
Augment with TA-lib functions
Parameter documentation: https://mrjbq7.github.io/ta-lib/
Function Sample: real = MA(close, timeperiod=30, matype=0)
"""
def __init__(self, function_name, out_cols, **kwargs):
self.ta_lib_function = abstract.Function(function_name)
self.out_cols = out_cols
self.ta_lib_kwargs = kwargs
def augment(self, df, concat=False):
fn_result = self.ta_lib_function(self.ta_lib_kwargs) # Problem here
df_out = None
if len(self.out_cols) == 1:
df_out = pd.DataFrame(fn_result, index=df.index, columns=self.out_cols)
else:
df_out = pd.DataFrame()
for i in range(0, len(fn_result)):
df_out[self.out_cols[i]] = pd.Series(fn_result[i], index=df.index)
return df_out
如此实例化
ma_slow_augments = TALibAugments("MA", ["ma_slow"], close=df_resampled["close"], timeperiod=100, matype=0)
我不确定 _Function 做了什么这是来自 TA-lib abstract.Function 函数的代码:
def Function(function_name, *args, **kwargs):
func_name = function_name.upper()
if func_name not in _func_obj_mapping:
raise Exception('%s not supported by TA-LIB.' % func_name)
return _Function(
func_name, _func_obj_mapping[func_name], *args, **kwargs
)
解决方案
推荐阅读
- flutter - 如何将颤振模块导入颤振项目?
- notepad++ - Notepad++ 以一定间隔删除行(例如,使用 Skip 和 Take)
- git - 强制推送后如何取回已删除的文件
- c++ - boost::program_options 在 Klocwork 中生成 MLK.MUST
- spring-boot - h2 中的序列生成器不提供唯一值
- java - 1.7 中的 Java 函数(转换 lambda 表达式)
- java - 获取 JSONArray 的子节点
- c# - 使用 AgilityHTMLPack 抑制 HTML 中的标签
- oracle11g - 如何回滚 Oracle DB 中的所有提交
- macos - 使用 ansible 包模块来处理 apt 和 homebrew