exec / eval的替代品?

时间:2013-05-27 07:21:21

标签: python python-2.7

我一直试图找到一种方法来可靠地设置和获取带有字符串名称的变量值。我可以远程接近这一点找到的任何东西似乎都不起作用。变量可以在任何模块中,并且导入这些模块。

获取和设置变量值的安全/正确方法是什么?

ps - 我和他们来到python一样新闻

2 个答案:

答案 0 :(得分:5)

虽然它可行,但通常不建议使用对程序本身有意义的变量名称。

相反,最好使用dict:

mydict = {'spam': "Hello, world!"}
mydict['eggs'] = "Good-bye!"
variable_name = 'spam'
print mydict[variable_name]  # ==> Hello, world!
mydict[variable_name] = "some new value"
print mydict['spam']  # ==> "some new value"
print mydict['eggs']  # ==> "Good-bye!"

(代码取自其他答案并修改)

答案 1 :(得分:2)

spam = "Hello, world!"
variable_name = 'spam'
print globals()[variable_name]  # ==> Hello, world!
globals()[variable_name] = "some new value"
print spam  # ==> some new value