不知道为什么, 但可以在条件外部重新定义 retry_time。 下面逻辑可以跑通, 如果你知道原因也请告诉我一下。。doge)
```python
# -*- coding: utf-8 -*-
import time
from functools import wraps
def retry(retry_time=10):
def retry_decorator(func):
@
wraps(func)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
n = retry_time
while result is None and n >= 0:
result = func(*args, **kwargs)
time.sleep(0.5)
n -= 1
return result
return wrapper
return retry_decorator
@
retry(5)
def test(a, b=1):
print(a, b)
return None
if __name__ == '__main__':
test(4)
```
参考:
https://stackoverflow.com/questions/39990133/while-loop-unboundlocalerror-local-variable-referenced-before-assignment