当前位置: 代码迷 >> python >> 使用exec并在python中进行编译
  详细解决方案

使用exec并在python中进行编译

热度:92   发布时间:2023-07-16 09:47:39.0

我想要一个字典,其中的值是语句。 我不需要动态地构建语句。 语句中出现的名称在本地范围内。 下面是一个简单的示例。 似乎“ exec”是要使用的东西,但这似乎不被接受,并且可能很慢。 此代码将在随机建模器中使用,并且将运行数百万亿次。 您能否建议我如何最好地实现这一想法(也许通过预编译?)。 难道我已经拥有此权利?

干杯!

杰夫

d={'plusone':'x+=1','minusone':'x-=1'}
x=2
exec(d['plusone'])
print x  ::: output '3'
exec(d['minusone'])
print x  ::: output '2'

大概您在定义x某个范围内执行exec(d['plusone']) ,否则您将得到NameError

将可调用对象放入dict并显式传递x (并显式分配给x )似乎要好得多:

from operator import add, sub

d={'plusone':lambda x: add(x,1), 'minusone':lambda x: sub(x,1)}

x = 2

x = d['plusone'](x)

x
Out[17]: 3
  相关解决方案