使用eval()与变量名字典
我知道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 /
这个命令)。最好避免这样做。