所以这基本上就是我正在使用的代码的工作方式。
global Gvar
Gvar = ["Hello"]
def someFunction():
Lvar = Gvar
Lvar.append("World")
print(Lvar)
print(Gvar)
someFunction()
这会输出两次“Hello World”。当我改变本地时,如何防止全局变量的改变?
在此先感谢,我希望有人可以帮助我。
这里的问题是以下行:
Lvar = Gvar
由于Gvar
是一个列表,因此是一个复杂的数据类型,Python 不会复制值,而是对变量的引用。因此,您是否修改Lvar
或Gvar
不会在这一点上有所作为。相反,您可能希望复制可以通过不同方式实现的值,例如:
Lvar = Gvar[:]
或者,您可以使用复制模块。查看Python 常见问题解答以获取更多信息。
为了完成,这是您修改后的代码的样子:
global Gvar
Gvar = ["Hello"]
def someFunction():
Lvar = Gvar[:]
Lvar.append("World")
print(Lvar)
print(Gvar)
someFunction()
作为旁注,Python 中的变量名应该是小写的——大写通常只用于类定义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句