是否可以在Python中“动态”创建局部变量?

时间:2012-01-10 06:33:41

标签: python variables memory local instantiation

是否可以使用Python代码创建局部变量,只给出变量的名称(字符串),以便后续调用locals()中的“'xxx'”将返回True?

这是一个视觉效果:

>>> 'iWantAVariableWithThisName' in locals()
False
>>> junkVar = 'iWantAVariableWithThisName'
>>> (...some magical code...)
>>> 'iWantAVariableWithThisName' in locals()
True

对于目的我需要这个技巧完全是另一个话题......

感谢您的帮助。

3 个答案:

答案 0 :(得分:10)

如果确实想要这样做,您可以使用exec

print 'iWantAVariableWithThisName' in locals()
junkVar = 'iWantAVariableWithThisName'
exec(junkVar + " = 1")
print 'iWantAVariableWithThisName' in locals()

当然,任何人都会告诉你使用exec是多么危险和苛刻,但那么“诡计”的任何实现都会如此。

答案 1 :(得分:6)

你可以手动玩游戏和更新本地人(),这有时会有效,但你不应该这样做。它在文档中特别警告。如果我这样做,我可能会使用exec:

>>> 'iWantAVariableWithThisName' in locals()
False
>>> junkVar = 'iWantAVariableWithThisName'
>>> exec(junkVar + '= None')
>>> 'iWantAVariableWithThisName' in locals()
True
>>> print iWantAVariableWithThisName
None

但是,百分之九十三,你真的想用字典代替。

答案 2 :(得分:-1)

无需使用exec,但locals()[string]或vars()或globals()也可以使用。

test1="Inited"

if not "test1" in locals(): locals()["test1"] = "Changed"
if not "test1" in locals(): locals()["test2"] = "Changed"

print " test1= ",test1,"\n test2=",test2