Я изо всех сил пытаюсь понять декоратор с Python.Мое понимание здесь ниже:
Сначала метод my_function_too(x,y)
будет определен как func в my_decorator(func)
, а затем будут выведены методы function_that_runs_func(*args,**kwargs)
.
1.Что такое функция в @functools.wraps(func)
?
2.Почему мы должны писать return function_that_runs_func
и return my_decorator
здесь?
Мои друзья объяснили, что метод function_that_runs_func()
собирается заменить метод my_function_too()
.Но я не мог понять, что он говорит и почему.
3.Кто-нибудь, пожалуйста, скажите мне мягко, что он имеет в виду?
КОД:
def decorator_with_arguments(number):
def my_decorator(func):
@functools.wraps(func)
def function_that_runs_func(*args,**kwargs):
print("In the decorator")
if number == 56:
print("Not running the function")
return None
else:
print("Running the 'real' func")
return func(*args,**kwargs)
return function_that_runs_func
return my_decorator
@decorator_with_arguments(57)
def my_function_too(x,y)
print(x+y)
my_function_too(57,67)
ВЫХОД:
В декораторе
124