Python:将字符串赋值给数字

Python: Assign and Eval string to number

我想通过将字符串分配给变量和数字来评估公式。 在这个例子中,我想要输出 5.

更多细节:我正在编写一个程序,用户可以在其中输入公式并将这些字母分配给公式编号(它保存在字典中)。然后程序应该用给定的数字计算公式的值。 我的问题是 'eval' 公式。请参阅以下代码中的 [?]。

formula='a+b'
a='a'
b='b'
dict1={}
dict1[a]=3
dict1[b]=2
[?]
print(eval(formula))

我使用 vars() 到目前为止 [?] 但现在我在重新定义我的变量时遇到问题(例如,对于 4 的更改,vars()[a]=4 没有改变任何东西,我仍然得到5)

vars()[a]=dict1[a]
vars()[b]=dict1[b]

那么有没有 vars() 的替代方法来解决这个问题?

你可以给 eval 一个字典作为全局变量:

print(eval(formula, dict1))