将变量传递给eval

时间:2020-08-30 19:02:14

标签: python dynamic eval

我正在尝试使用eval动态运行ta-lib指标,我构建了以下代码:

sy=eval("talib."+str(i)+"("+str(df['DFF'].values)+","+str(X)+")")

其中i是ta-lib指标,df ['dff']是持有价格的数据框,X是5

我收到以下错误:

talib.MAMA([1.42 1.42 1.42 1.42 1.42 1.42 1.42 1.42 1.42 1.42 1.42 1.42 1.42 1.42
                        ^
SyntaxError: invalid syntax

不确定我在这里做错了什么,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

绝对听@chris。使用eval应该绝对是万不得已。您正在程序中创建一个巨大的安全漏洞。

如果您有一个对象talib,并且想要调用名称存储在变量method_name中的某个方法,请使用类似以下内容的方法:

getattr(talib, method_name)(...arguments...)

您能更好地解释您要做什么吗?