Python函数if分支执行成功但全局变量a未修改问题排查
问题原因
- Python的变量作用域规则要求:如果要在函数内部修改全局作用域的变量,必须显式使用
global关键字声明该变量,否则Python会将函数内被赋值的同名变量识别为局部变量,不会对全局变量产生任何修改效果。 - 你代码里
check()函数中对a = 1、b = 1的赋值操作,本质是创建了名为a、b的局部变量,函数执行结束后局部变量就会销毁,外层的全局a、b完全没有被修改,所以最终打印结果还是0 0。
修复方案
在函数开头用global声明你需要修改的全局变量即可,修改后的代码如下:
a = 0 b = 0 def check(): # 声明要修改的是全局变量a、b global a, b if (pya.locateOnScreen("image.PNG") != None): print("Found") a = 1 else: print("Not found") b = 1 check() print(a,b)
修改后运行就能得到你预期的输出:
Found 1 0
内容的提问来源于stack exchange,提问作者Boranroni
相关产品推荐
相关产品推荐

