函数调用自身时全局变量丢失

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 它得到了什么。