Форум сайта python.su
0
задание такое: “Write a Decorator named after5 that will ignore the decorated function in the first 5 times it is called.”
Написал вот такое, конечо же, неработающее, так как счетчик внутри декоратора. Не могу сообразить, как заставить счетчик работать
и еще, посмотрите, правильно ли сделан игнор декорируемой функции?
спасибо
def doit(): print ('Yo!') def after5 (func): def wrapper (): cnt = 1 if cnt <= 5: return func() cnt +=1 return wrapper doit = after5(doit) for i in range (6): doit()
Отредактировано Fixx_Jr (Март 31, 2019 10:42:34)
Офлайн
568
def skip(n): attempts = 0 def decorator(func): def wrapper(*args, **kwargs): nonlocal attempts attempts += 1 if attempts > n: print("Function now works") return func(*args, **kwargs) else: print("Function has been waiting") return None return wrapper return decorator @skip(5) def inc(a): return a + 1 print(inc(1)) print(inc(1)) print(inc(1)) print(inc(1)) print(inc(1)) print(inc(1)) print(inc(1)) print(inc(1)) print(inc(1)) print(inc(1))
Офлайн