Guest User

Untitled

a guest
Dec 17th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. def add2(func):
  2. def wrapper(*args, **kwargs):
  3. return func(*args, **kwargs) + 2
  4. return wrapper
  5.  
  6.  
  7. @add2
  8. def foo(number):
  9. return number * 2
  10.  
  11.  
  12. f = foo(5)
  13. print(f)
  14.  
  15.  
  16. def add5(func):
  17. def wrapper(*args, **kwargs):
  18. return func(*args, **kwargs) + 5
  19. return wrapper
  20.  
  21.  
  22. def bar(number):
  23. return number ** 2
  24.  
  25.  
  26. # Can also be defined without decorator function.
  27. bar = add5(bar)
  28. f = bar(2)
  29. print(f)
  30.  
  31.  
  32. # What if I want to increment by 8 must I create a new function add8? No.
  33. # And it is not a decorator this is a function which going to return a decorator function.
  34. def add(number):
  35. def decorator(func):
  36. def wrapper(*args, **kwargs):
  37. return func(*args, *kwargs) + number
  38. return wrapper
  39. return decorator
  40.  
  41.  
  42. def multiply(number):
  43. def decorator(func):
  44. def wrapper(*args, **kwargs):
  45. return func(*args, *kwargs) * number
  46. return wrapper
  47. return decorator
  48.  
  49.  
  50. @multiply(3)
  51. @add(8)
  52. def baz(number):
  53. return number
  54.  
  55.  
  56. f = baz(8)
  57. print(f)
  58.  
  59.  
  60. # There is an another way to calling the bar function
  61. def qux(number):
  62. return number ** 3
  63.  
  64.  
  65. qux = add(8)(qux)
  66. print(qux(3))
  67.  
  68.  
  69. # This kind of functions can be used in a method. But it has to changed with this way
  70. def add(number):
  71. def decorator(func):
  72. def wrapper(self, *args, **kwargs):
  73. return func(self, *args, **kwargs) + number
  74. return wrapper
  75. return decorator
  76.  
  77.  
  78. class Foo:
  79. def __init__(self, number):
  80. self.number = number
  81.  
  82. @add(2)
  83. def bar(self):
  84. return self.number ** 2
  85.  
  86.  
  87. f = Foo(8)
  88. print(f.bar())
Add Comment
Please, Sign In to add comment