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

Python函数返回值未正确赋值给变量是什么原因?

错误原因

  • 调用winconditions()函数时没有接收它的返回值,函数内部生成的pwin = 1结果没有同步到全局作用域的pwin变量上,全局pwin一直保留初始值0,所以打印结果始终为0。
  • 函数内部定义的pwin属于局部变量,和全局的pwin本身就是两个独立变量,默认情况下局部变量的修改不会影响全局变量的取值。

修复方案

将函数调用行修改为接收返回值即可,这也是最推荐的变量传值方式:

x = 1
def winconditions():
    if x == 1:
        pwin = 1
        return pwin

pwin = 0
while pwin == 0:
    pwin = winconditions() # 接收函数返回值,更新全局pwin
    print(pwin)

可选实现(不推荐):在函数内声明使用全局pwin变量,直接修改全局值。该方式会让变量作用域逻辑混乱,易引发后续维护问题,非特殊情况不建议使用:

x = 1
def winconditions():
    global pwin
    if x == 1:
        pwin = 1

pwin = 0
while pwin == 0:
    winconditions()
    print(pwin)

内容的提问来源于stack exchange,提问作者Lini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:09:02