所以,在您的情况下,只需选择
很抱歉出现这个令人困惑的标题,在我的函数中,我的参数是我想要设置为全局变量名的名称。我可以在函数之外完成这项工作,并且我可以实例化一个全局变量,而不使用字符串作为其名称,而且我还没有找到任何其他文章同时解决这两个问题。
def myFunc(varName):
temp = varName
# global vars()[temp] <== This line produces the error
vars()[temp] = 5 # varName becomes a local variable
您可以使用globals
函数来实现这一点:
def set_global_var(name, value):
globals()[name] = value
if __name__ == '__main__':
set_global_var('foo', 3)
print(foo)
请注意,在大多数情况下,这不是一个好主意。您可能希望使用全局dict
对象,并简单地为其分配新密钥
使用global
,就像这样(注意,在调用fun1
之前,some_text
是未知的):
def fun1():
global some_text
some_text = "1234"
def fun2():
print(some_text)
fun1()
fun2()
正如人们所期望的那样,这将产生1234
,请参见ideone.com上的演示。
所以,在您的情况下,只需选择
def myFunc(varName):
global TEMP
TEMP = varName
问题仍然存在:你为什么要这么做?不要用只有类/函数需要的变量来扰乱全局命名空间。