Что делает следующий фрагмент программного кода на Python?
def my_decorator(func):
def wrapper():
print("Before functions is called.")
func()
print("After functions is called.")
return wrapper
@my_decorator
def say_hello(name):
print("Hello," + name + "!")
say_hello("Alice")
Другие предметы Университет Декораторы в Python программирование на Python декораторы в Python функции в Python изучение Python средства программной разработки университет программирования обучение программированию Python для начинающих разработка программного обеспечения основы Python функциональное программирование примеры кода Python
Давайте разберем данный фрагмент кода на Python и поймем, что он делает шаг за шагом.
В начале кода определяется функция my_decorator
, которая принимает одну функцию func
в качестве аргумента. Внутри этой функции создается другая функция wrapper
.
wrapper
:
Функция wrapper
выполняет следующие действия:
func
.func
.func
.wrapper
:
После определения wrapper
, функция my_decorator
возвращает эту функцию.
Далее, с помощью символа @
, декоратор my_decorator
применяется к функции say_hello
. Это означает, что вместо вызова say_hello
мы фактически вызываем wrapper
, который добавляет поведение до и после вызова say_hello
.
say_hello
:
Функция say_hello
принимает один аргумент name
и выводит сообщение "Hello, [name]!".
say_hello
:
Наконец, происходит вызов функции say_hello("Alice")
. Поскольку мы применили декоратор, на самом деле будет вызвана функция wrapper
, которая сначала выведет сообщение "Before functions is called.", затем вызовет say_hello
, и, наконец, выведет сообщение "After functions is called."
Таким образом, правильный ответ на ваш вопрос: Создает декоратор "my_decorator", который выводит сообщения до и после вызова функции, а затем применяет его к функции "say_hello" и вызывает функцию "say_hello".