在python中使用exec和compile

2024-10-03 02:41:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一本字典,它的值是一个语句。我不需要动态构建语句。语句中出现的名称在本地范围内。下面是一个简单的例子。似乎“exec”是应该使用的东西,但这似乎是不赞成的,而且可能是缓慢的。此代码将在随机建模器中使用,并将运行数百万次。你能建议我如何最好地实现这个想法(也许通过预编译?)。是不是我已经有这个权利了?你知道吗

干杯!你知道吗

杰夫

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

Tags: 代码权利名称output字典动态plus语句
1条回答
网友
1楼 · 发布于 2024-10-03 02:41:26

假设您正在某个定义了x的范围内执行exec(d['plusone']),否则您将得到一个NameError。你知道吗

将callable放入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

相关问题 更多 >