是否可以使用Python代码创建局部变量,只给出变量的名称(字符串),以便后续调用locals()中的“'xxx'”将返回True?
这是一个视觉效果:
>>> 'iWantAVariableWithThisName' in locals()
False
>>> junkVar = 'iWantAVariableWithThisName'
>>> (...some magical code...)
>>> 'iWantAVariableWithThisName' in locals()
True
对于目的我需要这个技巧完全是另一个话题......
感谢您的帮助。
答案 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