使用eval()与变量名字典

0 投票
1 回答
1820 浏览
提问于 2025-04-17 17:33

我知道eval()在这种情况下非常有用:

x = 3
y = 2
myformula = "x + y"
print eval(myformula)
>>> 5

但是如果我不想死板地写变量名和变量值,而是想用一个字典来处理呢?

mydict = {'x':3, 'y':2, 'z':5}
myformula = "x + y + z"
print eval(myformula)
>>> 10
or,
mydict = {'a':100, 'b':10, 'c':1}
myformula = "(a * b) - c"
print eval(myformula)
>>> 999

我查了一下怎么把一个变量赋值给另一个变量,但我无法把那些答案应用到我的问题上。我还是想保持myformula字符串的那种写法。希望能得到一些帮助。

谢谢。

保罗
芝加哥,伊利诺伊州

1 个回答

6

这就是eval函数的第二个和第三个参数的作用(可以查看文档了解更多):

>>> d = {'x':3, 'y':2, 'z':5}
>>> eval("x + y + z", d)
    10

要注意,直接用eval来处理用户输入是很危险的(想想rm -Rf /这个命令)。最好避免这样做。

撰写回答