В общем пытаюсь учить питон и не могу никак понять суть декораторов.
Всё зависит от того, насколько давно вы уже пытаетесь их понять и всё никак.
Если покумекав пару минут уже отчаялись, то наверно программирование - не ваша стезя.
Если прочитав пару статей не смогли разобраться, то, может быть, следует сделать еще одну попытку. Или вы считаете, что это прям рокет сайнс и раз уж с первого подхода не осилили, то это уж на всю жизнь теперь "работать без декораторов". Судьба.
Вообще меня удивляет такой фатализм. Ну не понял ты что-то, так разбирайся, а не беги выяснять можно ли без этого прожить всю жизнь. Декораторы - это очень простая концепция.
Если ты не способен её понять, то программировать профессионально не сможешь - это факт.
И нет, на декораторах свет клином не сошелся. Нужно понимать что в питоне функция - это объект первого рода и что это значит.
Нужно понимать, что такое "замыкание" в контексте функционального программирования.
Более того, нужно понимать что такое дескрипторы, как работают мета-классы и много-много всего такого.
Нет, с этими знаниями не рождаются, их нужно осваивать.
Декораторы - это очень простая концепция.
Декоратор - это функция, которая принимает в качестве единственного аргумента какую-то функцию. Декоратор что-то делает с этой функцией (где-то регистрирует ее, документирует, оборачивает её вызов в другую функию) и возвращает её изменённую или другую функцию-обёртку.
Что конкретно вам не понятно?
Надо заметить, что Декоратор как паттерн проектирования имеет боле еширокий смысл. Декорировать можно объекты, классы, функции, даже модули (постольку, поскольку это тоже объекты). Учиться вам надо, сударь, и не ожидать, что всё прошьётся в мозг мгновенно. Быть программистом - это всегда учиться. Не останавливаясь.
Примеров декораторов огромное множество: самые простые и понятные - это:
- замер времени выполнения функции
- кэширование результата
- подстановка части аргументов (
partial)