Functools
wraps
wrapsdef my_decorator(func):
def wrapper(*args, **kwargs):
print("Hi")
return func(*args, **kwargs)
return wrapper
@my_decorator
def add(x, y):
"""add x and y"""
return x + y
>> add(1,2)
Hi
3
>> add.__name__
'wrapper' # does not return 'add' because when the function was executing, it was inside wrapper()
>> add.__doc__
# does not return anything because wrapper() has no docLast updated