Reassigning value to a variable inside a function in python
本问题已经有最佳答案,请猛点这里访问。
我想运行一个无限循环,每100个循环我都要打印一次。如果我这样做:它工作得很好,
1 2 3 4 5 6 7 8 | delay=0 while 1: delay=delay+1 print(delay) if delay>100: delay=0 print('100th time') |
但是,如果我将if语句放在函数中,它会给出错误:
1 2 3 4 5 6 7 8 9 | delay=0 def foo(): if delay>100: delay=0 print('100th time') while 1: delay=delay+1 print(delay) foo() |
错误为:未绑定的本地错误:分配前引用了本地变量"delay"。
我是否可以在函数中重新分配?把整个事情放到while循环中对我来说是个问题。
如果不想将
1 2 3 4 5 6 7 8 9 10 | delay=0 def foo(): global delay if delay>100: delay=0 print('100th time') while 1: delay=delay+1 print(delay) foo() |
向功能和使用模块传递延迟(
1 2 3 4 5 6 7 8 9 | delay=0 def foo(delay): if delay % 100 == 0: print('100th time') while True: delay=delay+1 print(delay) foo(delay) |
当存在其他有效的解决方案时,始终避免使用
您可以在函数内部使用
1 2 3 4 5 6 7 8 9 10 | delay=0 def foo(): global delay if delay>100: delay=0 print('100th time') while 1: delay=delay+1 print(delay) foo() |
在这种情况下,您还可以通过传递函数
1 2 3 4 5 6 7 8 9 | delay=1 def foo(delay): if delay == 0: print('100th time') while True: delay = delay + 1 print(delay) foo(delay) delay = delay % 100 |