2023-03-03 00:16:59
Думаю багато хто з вас чув про таке "явище" як декоратори, а дехто, через плітки про них, можливо встиг їх незлюбити ще до того, як познайомився з ними
Сьогодні я поясню що це таке, нащо воно треба і чому це не страшно.
Декоратор - це функція для функції говорячи простими словами. Тобто вона приймає в якості аргументу функцію, та змінює її роботу, додаючи щось і повертає її змінений варіант
Для прикладу візьмімо досить простий, але часто корисний варіант використання декораторів.
Код:
from time import time
def time_decorator(func):
def timer(number):
t = time()
func(number)
return round(time() - t, 3)
return timer
@time_decorator
def list_generator(number):
print([i for i in range(number)])
print(list_generator(1000))
Декоратор time_decorator приймає функцію list_generator в якості аргументу і вимірює час її виконання, за допомогою використання функції time() модуля time.
Тоді що ж таке це @?
Як то кажуть, це синтаксичний цукор. Просто розробники Python, створили більш зручний спосіб використання декораторів, ніж цей, який теж до речі працює:
d = time_decorator(list_generator)
print(d(1000))
Звісно є важкі варіанти декораторів, такі як декоратор, для декоратора іншого декоратора, але це дуже рідкісний варіант їх використання. Головний поклик декораторів - це полегшення читання та використання коду, а не залякування програмістів
«Якщо налагодження — це процес усунення помилок, то програмування має бути процесом їх розміщення»
Сем Редвайн
255 views21:16