有没有办法让python对字符串进行评估和执行?我有一个文件,其中包含一些需要计算的表达式,可能是这样的。
f1(ifilter(myfilter,x))
f2(x)*f3(f4(x)+f5(x))
我浏览文件并eval
表达式。
有些表达式可能希望在执行昂贵的操作后保存他们的工作
y = g(x); h(y)+j(y)
不幸的是,y=g(x)
需要exec
,但获得h+j
的值为eval
。这是如何工作的?
答案 0 :(得分:1)
尝试使用内置compile()
。在单一模式下使用它时,它可以处理您想要的两种情况。例如:
compile('3+4','<dummy>','single')
将返回已编译的代码对象。您可以使用exec()或eval()执行它:
>>> exec(compile('3+4','<dummy>','single'))
7
>>> exec(compile('x=3+4','<dummy>','single'))
>>> print x
7