函数调用自身时全局变量丢失
Globals lost when function calls itself
我需要在运行时将变量“a”添加到全局变量,并且能够随时从项目 class 中恢复它。结果:在全局变量里看不到。
下面有一个例子。当我打印 globals() 时,我没有找到新的“a”变量。
具体来说,我需要能够将 printVal 结果保存在一个名为“a”的变量中,我可以在下次调用此函数时参考它。
在我的最终程序中,我计划添加任意数量的不同变量(变量和值)。
示例:
class Item():
def printVal(self,value):
return value
def func(self):
userInput = input("Input string:")
if userInput!="0":
exec("a=self.printVal(\""+userInput+"\")",globals(),locals())
else:
return
print(globals())
self.func()
if __name__ == "__main__":
item = Item()
item.func()
如果您只想使用运行时生成的名称设置一个全局变量,您可以这样做:
globals()[name] = val
顺便说一句 printVal
方法是虚拟的。只是 return 它得到了什么。
我需要在运行时将变量“a”添加到全局变量,并且能够随时从项目 class 中恢复它。结果:在全局变量里看不到。
下面有一个例子。当我打印 globals() 时,我没有找到新的“a”变量。
具体来说,我需要能够将 printVal 结果保存在一个名为“a”的变量中,我可以在下次调用此函数时参考它。
在我的最终程序中,我计划添加任意数量的不同变量(变量和值)。
示例:
class Item():
def printVal(self,value):
return value
def func(self):
userInput = input("Input string:")
if userInput!="0":
exec("a=self.printVal(\""+userInput+"\")",globals(),locals())
else:
return
print(globals())
self.func()
if __name__ == "__main__":
item = Item()
item.func()
如果您只想使用运行时生成的名称设置一个全局变量,您可以这样做:
globals()[name] = val
顺便说一句 printVal
方法是虚拟的。只是 return 它得到了什么。