我知道eval()对于这样的事情非常有用:
x = 3
y = 2
myformula = "x + y"
print eval(myformula)
>>> 5
Run Code Online (Sandbox Code Playgroud)
但是,如果我不想对变量名和值进行硬编码,而是使用字典怎么办?
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
Run Code Online (Sandbox Code Playgroud)
我查找了如何将变量分配给变量,但无法将其他答案应用于我的问题。我仍然希望保留myformula字符串的符号。任何帮助,将不胜感激。
谢谢。
伊利诺伊州保罗· 芝加哥
这是第二和第三个参数eval的用途(请阅读文档):
>>> d = {'x':3, 'y':2, 'z':5}
>>> eval("x + y + z", d)
10
Run Code Online (Sandbox Code Playgroud)
请注意,对eval任意用户输入进行u运算是不安全的(请考虑rm -Rf /)。避开它。
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |