如何在 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)
我正在尝试评估 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)