Я изучаю Python на Sololearn, и я наткнулся на этот бит кода, который намеревается украсить функцию:
def decor(func):
def wrap():
print("============")
func()
print("============")
return wrap
def print_text():
print("Hello world!")
Когда я вызываю это так decor(print_text)
Я просто получаю этот вывод <function __main__.decor.<locals>.wrap()>
Чтобы получить ожидаемый, оформленный вывод, мне нужно вызвать функцию с дополнительным набором пустых скобок, например, decor(print_text)()
, которая выводит правильный результат:
============
Hello world!
============
Я понимаю, что существует более простой способ декорирования без этого беспорядка, однако я нахожусь в нем надолго и хотел бы ознакомиться с тем, как python "думает". Итак, мой вопрос: почему дополнительный набор скобок () необходим для получения правильного вывода? Почему бы просто не использовать decor(print_text)
, чтобы получить правильный результат?
Спасибо всем! Я прошу прощения за длинные вопросы, но я пытаюсь объяснить свою мысль как можно лучше:)
Хорошо, я думаю, что вы, все я думаю, ответили на все мои вопросы относительно этого кода замечательные люди ниже. Спасибо всем за помощь!