我有一个带有字符串值的变量。我想创建一个以值作为其名称/标识符的列表,然后将值附加到列表中。因此,假设变量s = "temp1",我想创建一个名为的列表temp1。显然,就我而言,我不知道的价值s。
s = "temp1"
temp1
s
别。创建动态变量很少是一个好主意,并且,如果您尝试创建本地名称(在函数内部),则很困难,并且会极大地影响性能。
请改用字典:
lists = {} lists[strs] = [] lists[strs].append(somevalue)
命名空间只是用于在其中查找名称的代码的默认词典。创建更多此类词典更加容易和整洁。
您仍然可以使用globals()函数访问全局(模块名称空间),该函数返回一个(可写的)字典。您可以使用来访问函数本地名称空间locals(),但是由于已优化了函数中的本地名称空间访问,因此对其进行写入通常无效。
globals()
locals()
在Python 2中,您可以通过exec在函数中使用语句来删除该优化。在Python 3中,您无法再关闭优化,因为该exec语句已被exec()function取代,这意味着编译器不再能确定地检测到您可能正在使用该函数写入本地名称空间。
exec
exec()