koulin

wrappers

Jul 17th, 2024
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.15 KB | None | 0 0
  1. # task 1
  2. import time
  3.  
  4. def timer(func):
  5.     def inside_func(*args,**kwargs):
  6.         start = time.time()
  7.         func(*args, **kwargs)
  8.         end = time.time()
  9.         return end - start
  10.     return inside_func
  11.  
  12. # task 2
  13.  
  14. def cacher(func):
  15.     D = dict()
  16.     def wrapper(*args):
  17.         if args in D:
  18.             return D[args]
  19.         D[args] = func(*args)
  20.         return D[args]
  21.     return wrapper
  22.  
  23. # task 3
  24.  
  25. def loggining(func, name_file):
  26.     def wrapper(*args, **kwargs):
  27.         with open(name_file, "w", encoding='utf-8') as f:
  28.             f.write(f'Функция {func.__name__} была вызвана с аргументами {args} {kwargs}. Ее результат: {func(*args, **kwargs)}')
  29.     return wrapper  
  30.    
  31. # task 4
  32.  
  33. def retry(max_at, delay = 0):
  34.     def wrapper(func):
  35.         def inside_func(*args,**kwargs):
  36.             res = func(*args,**kwargs)
  37.             at = 0
  38.             while max_at <= at:
  39.                 if res is not None:
  40.                     return res
  41.                 at += 1
  42.                 time.sleep(delay)
  43.             return None
  44.         return inside_func
  45.     return wrapper
  46.      
Advertisement
Add Comment
Please, Sign In to add comment