同时评估和执行

时间:2010-08-03 21:04:15

标签: python eval exec

有没有办法让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。这是如何工作的?

1 个答案:

答案 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