【发布时间】:2011-10-06 09:45:28
【问题描述】:
我有一个字符串表达式,我需要对其进行 eval。此表达式可能具有来自给定字典的键名,并且这些键的值可能是也可能不是字符串。为了让我的 eval 能够评估这些名称,我正在使用出现在该 dict 中的键名创建变量,并将该 dict 中的值分配给它,如下例所示。但是从我读过的here 来看,不应该使用 vars() 。这让我担心我已经实施的稳定性和风险。关于如何以更好的方式实现这一点的任何想法或建议?
def test(e1,d1):
for k,v in d1.iteritems():
if k in e1:
vars()[k]=v
return eval(e1)
test('x+y', {'x':1, 'y':2})
谢谢!!
【问题讨论】:
-
更大的问题:使用
eval()是个坏主意。你真正想做什么?