TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #2228 5.68K
​​​Самые популярные вопросы на собеседовании: «Что такое декоратор?»

Этот вопрос, пожалуй, встречается на каждом собеседовании. Вообще декораторы — тема большая и как-нибудь обязательно найду хороший материал, чтобы раскрыть её шире. Но а пока давайте базово разберёмся в этом вопросе.

Если вкратце, декоратор позволяет добавить новую функциональность к существующей функции. Это делается так. Функция передаётся декоратору, а он выполняет и существующий и дополнительный код. Для примера напишем декоратор, который записывает в журнал вызовы другой функции.

Напишем функцию декоратора
В качестве аргумента он принимает функцию func. Декоратор определяет функцию log_function_called, которая вызывает func() и выполняет код print(f'{func} called.'). А затем возвращает определенную им функцию:
def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called

Напишем другие функции, к которым позже добавим декоратор:
def my_name():
print('chris')
def friends_name():
print('naruto')

my_name() #=> chris
friends_name() #=> naruto

Теперь добавим декоратор к эти двум функциям:
@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')

my_name()
#=> <function my_name at 0x10fca5a60> called.
#=> chris

friends_name()
#=> <function friends_name at 0x10fca5f28> called.
#=> naruto

Теперь легко добавить ведение журнала в любую функцию, которую мы пишем. Достаточно написать перед ней @logging.

#собеседование
  • 👍 26
  • ❤ 1
  • 👎 1
  • 🔥 1
  • 💩 1
More from @zen_of_python
  1. Oct 14, 2026Почему mmap не всегда избавляет от копирования mmap позволяет обращаться к содержимому фай…
  2. Oct 14, 2026Post #5063
  3. Oct 14, 2026Когда Path.info экономит обращения к файловой системе При обходе большого каталога проверк…
  4. Oct 13, 2026👁👁 Тестовый собес на Python с разработчиком из Яндекса [+ ответы на 50 сложных вопросов…
  5. Oct 13, 2026Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-ск…
  6. Oct 13, 2026Post #5059
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →