如何在 Python 中正确执行评估?

How can I do an eval correctly in Python?

我正在尝试评估 Flask 项目中的字符串,但我一直收到此错误。

File "<string>", line 0

    ^
SyntaxError: unexpected EOF while parsing

这是我正在使用的代码

def f(x):
   input = "math.log((math.sin(x)**2) + 1) - (1 / 2)"
   string = input.replace("x",str(x))
   result = eval(string)
   return result

因为替换是字符串的方法class,所以必须从字符串本身调用它。

def f(x):
   input = "math.log((math.sin(x)**2) + 1) - (1 / 2)"
   string = input.replace("x",str(x))
   result = eval(string)
   return result

但是,除非万不得已,否则您应该避免调用 eval;评估是邪恶的。 Eval(及其同类 exec)可以打开您的程序以进行任意代码注入。

你能多解释一下你的用例吗,我看看能不能推荐一个更好的选择?

为什么这行不通:

def f(x):
    return math.log((math.sin(x)**2) + 1) - (1 / 2)

尝试改变

result = eval(string)
return result

return eval(string)