擅长:python、mysql、java
<p>您可以指定decorator参数,如下所示:</p>
<pre><code>import logging
MAXIMUM = 5
def tryagain(attempts=MAXIMUM):
def __retrier(func):
def retrier(*args,**kwargs):
nonlocal attempts
while True:
try:
return func(*args,**kwargs)
except Exception as e:
attempts -= 1
if attempts > 0:
print('Failed, attempts left=', attempts)
continue
else:
print('Giving up')
raise
return retrier
return __retrier
@tryagain(5) # < this specifies number of attempts
def fun(attempts='This is my parameter'): # < here the function specifies its own `attempts` parameter, unrelated to decorator
raise Exception(attempts)
fun()
</code></pre>