Python函数中修改全局变量失败问题求解决方案
如何在Python函数中修改全局变量
嘿,这个问题我之前踩过坑!你现在的代码里,函数myFunct()里的myVar = False其实是创建了一个局部变量,和全局作用域里的myVar完全是两个东西,所以全局变量根本没被修改。给你两个靠谱的解决方案:
方案一:使用global关键字
这是最直接的方法,用global关键字告诉Python:“我要操作的是全局作用域里的那个变量,不是新的局部变量”。修改后的代码如下:
myVar = True # 默认值 def myFunct(): global myVar # 声明使用全局变量myVar myVar = False # 调用函数测试 myFunct() print(myVar) # 输出 False,全局变量已被修改
方案二:用可变对象包裹全局变量
如果不想用global关键字,可以把全局变量放在列表、字典这类可变对象里。因为可变对象的内容修改不需要重新赋值,函数里直接操作对象内部元素就能改变全局的值:
myVar = [True] # 用列表包裹默认值 def myFunct(): myVar[0] = False # 直接修改列表元素,无需global # 调用函数测试 myFunct() print(myVar[0]) # 输出 False
小提示
如果只是在函数里读取全局变量而不修改,那完全不需要global关键字,直接用就行;只有当你要给全局变量重新赋值的时候,才需要用上面的方法。
内容的提问来源于stack exchange,提问作者Julien Pepe
相关产品推荐
相关产品推荐

