You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:27:01