Get Mystery Box with random crypto!

Думаю багато хто з вас чув про таке 'явище' як декоратори, а д | RITE [ ПРОГРАМУВАННЯ ]

Думаю багато хто з вас чув про таке "явище" як декоратори, а дехто, через плітки про них, можливо встиг їх незлюбити ще до того, як познайомився з ними

Сьогодні я поясню що це таке, нащо воно треба і чому це не страшно.

Декоратор - це функція для функції говорячи простими словами. Тобто вона приймає в якості аргументу функцію, та змінює її роботу, додаючи щось і повертає її змінений варіант

Для прикладу візьмімо досить простий, але часто корисний варіант використання декораторів.

Код:
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))

Звісно є важкі варіанти декораторів, такі як декоратор, для декоратора іншого декоратора, але це дуже рідкісний варіант їх використання. Головний поклик декораторів - це полегшення читання та використання коду, а не залякування програмістів

«Якщо налагодження — це процес усунення помилок, то програмування має бути процесом їх розміщення»
Сем Редвайн