Python while循环调用函数时计数器不更新始终输出2怎么办
Python while循环调用自定义函数时计数器更新问题解决方案
问题根因
代码运行后始终输出2,无法逐次累加的核心原因是Python中的整数属于不可变数据类型:函数传参时会将实参的值绑定给形参,函数内部对形参Counter的重新赋值,仅会修改函数作用域内的局部变量,完全不会影响外部全局作用域下的计数器变量A。
每次循环调用Main(A)时,传入的A永远是初始赋值的1,函数内部执行加1操作后固定输出2,外层的A从来没有被更新,自然无法实现累加效果。
原问题代码:
def Main(Counter): Counter = Counter +1 print (Counter) A = 1 while True: Main (A)
运行异常效果:
正确实现方式
- 推荐写法:让函数返回更新后的计数值,在循环外部用变量接收返回值完成更新,这种写法无全局变量副作用,逻辑清晰易维护
def Main(Counter): Counter = Counter + 1 print(Counter) return Counter # 返回更新后的计数结果 A = 1 while True: A = Main(A) # 用函数返回值覆盖更新外部计数器变量
- 全局变量写法(非必要不推荐,容易引发作用域混乱):在函数内部显式声明要修改的全局变量
def Main(): global A # 声明当前作用域下要修改全局变量A A = A + 1 print(A) A = 1 while True: Main()
内容的提问来源于stack exchange,提问作者l zh
相关产品推荐
相关产品推荐

