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
相关产品推荐
相关产品推荐

