使用字符串变量作为变量名

可能的复制品:
如何在 Python 中执行变量变量?

我有一个分配了字符串的变量我想根据这个字符串定义一个新变量。

foo = "bar"
foo = "something else"


# What I actually want is:


bar = "something else"
406229 次浏览

你可以使用 exec:

>>> foo = "bar"
>>> exec(foo + " = 'something else'")
>>> print bar
something else
>>>

相反,使用字典会让你快乐得多:

my_data = {}
foo = "hello"
my_data[foo] = "goodbye"
assert my_data["hello"] == "goodbye"

你可以使用 setattr

name  = 'varname'
value = 'something'


setattr(self, name, value) #equivalent to: self.varname= 'something'


print (self.varname)
#will print 'something'

但是,由于您应该通知一个对象来接收新变量,所以这只能在类或模块中工作。