Advertisement
cirossmonteiro

python decorators

Nov 13th, 2021 (edited)
896
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.70 KB | None | 0 0
  1. def multiply(*params, **kwparams):
  2.     print('multiply params: ', params, kwparams)
  3.     def decorator(function):
  4.         def wrapper(*args, **kwargs):
  5.             args = list(args)
  6.             print('function params: ', args, kwargs)
  7.  
  8.             for index, arg in enumerate(args):
  9.                 if index < len(params):
  10.                     args[index] *= params[index]
  11.  
  12.             for key in kwargs:
  13.                 if key in kwparams:
  14.                     kwargs[key] *= kwparams[key]
  15.                    
  16.             return function(*args, **kwargs)
  17.         return wrapper
  18.     return decorator
  19.  
  20. # goal: multiply each param passed to "add" to values passed to decorator, then "add" sums them all
  21. @multiply(4, 5, x=2, y=3)
  22. def add(*args, **kwargs):
  23.     print('add: ', args, kwargs)
  24.     return sum(args + tuple(kwargs.values()))
  25.  
  26. def multiply(*params, **kwparams):
  27.     print('multiply params: ', params, kwparams)
  28.     def decorator(function):
  29.         def wrapper(*args, **kwargs):
  30.             args = list(args)
  31.             print('function params: ', args, kwargs)
  32.  
  33.             for index, arg in enumerate(args):
  34.                 if index < len(params):
  35.                     args[index] *= params[index]
  36.  
  37.             for key in kwargs:
  38.                 if key in kwparams:
  39.                     kwargs[key] *= kwparams[key]
  40.                    
  41.             return function(*args, **kwargs)
  42.         return wrapper
  43.     return decorator
  44.  
  45. # goal: multiply each param passed to "add" to values passed to decorator, then "add" sums them all
  46. @multiply(4, 5, x=2, y=3)
  47. def add(*args, **kwargs):
  48.     print('add: ', args, kwargs)
  49.     return sum(args + tuple(kwargs.values()))
  50.  
  51. print('result: ', add(1, 2, y=6))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement