Как устроены декораторы в python?

  Рет қаралды 14,864

Хитрый питон

Хитрый питон

3 жыл бұрын

Чтобы разобраться с тем, как работают декораторы нужно помнить, что функция в питоне - полноценный объект. Давайте возьмем простую задачу проверки прав пользователя и на ее основе разберемся, как работают декораторы в python.
Я в Telegram - t.me/tricky_python
Канал создан при поддержке сообщества Moscow Python.
Наш KZfaq-канал - / @moscowdjangoru
Курсы Learn Python - learn.python.ru/

Пікірлер: 21
@grandpraline
@grandpraline Жыл бұрын
Спасибо за такие хорошие пояснения. Пока еще не всегда успеваю уследить, но ваша способность понятно объяснять на очень высоком уровне, как и чистота речи :)
@artemsukharenko4877
@artemsukharenko4877 3 жыл бұрын
Есть таки замечание: Декоратор это не какая то фишка питона - это паттерн и он реализуется в любом ЯП где есть функции высшего порядка. Собственно синтакисис, через собачку это просто сахарок для нас любимых. Не понимаю почему это скрывается - но на собесах этим просто уничтожают ахахаха
@Mr.Fix_man
@Mr.Fix_man 10 ай бұрын
Я понял декораторы😂😂😂😂😂 Вот это да😮😮😮 Спасибо за шикарное объяснения. Вставлял в проект декоратор для подсчета работы функций, но не понимал как работает😅
@FoodMaks
@FoodMaks 3 жыл бұрын
Спасибо большое автору за быстрые и логичные комментарии. Всем советую подписку и лайк.
@user-p934tg3ghugh
@user-p934tg3ghugh 2 жыл бұрын
Хорошо объясняешь, спасибо
@user-ti7jk9yd4t
@user-ti7jk9yd4t 2 жыл бұрын
Лучшее объяснение декораторов из всех, что я видел
@irno8526
@irno8526 Жыл бұрын
Лучшее объяснение
@sainco3036
@sainco3036 3 жыл бұрын
Спасибо.
@mustakrakish3388
@mustakrakish3388 8 ай бұрын
Спасибо, очень интересный пример) Везде данная тема обезличена, а тут живой пример)
@irno8526
@irno8526 Жыл бұрын
Вот эти наслоения. Усложнение и добавление синтаксиа по нарастающей. Это блестяще. Господи, спасибо Вам огромное😢 наконец понятно все и до конца
@sergioborussa
@sergioborussa 2 жыл бұрын
Михаил Корнеев 👍
@user-iz4rw6xy8m
@user-iz4rw6xy8m 2 жыл бұрын
Приветствую, не знаете ли вы где можно попрактиковать декораторы, а то не совсем ясно. Спасибо!
@thebijou1067
@thebijou1067 11 ай бұрын
Добрый день, Михаил! Спасибо за видео: все доступно и хорошим языком объяснено. Я только начинаю остаивать python и написала самый простой цикл с условиями, которые должны проверяться по 2-м колонкам. Увы, код не хочет проверять данные, которые я передаю - выдает Non для всех строк. Может ты сможешь помочь найти ошибку. # Функция, которая cгруппирует пары по видам def categorize_species(column, column1): try: if '3/4 gyr x saker' in column and 'gyr' in column1: return '3/4 gyr_saker + gyr' elif '3/4 gyr x saker' in column and 'gyr x saker' in column1: return '3/4 gyr_saker + gyr_saker' elif '7/8 gyr x saker' in column and '3/4 gyr x saker' in column1: return '7/8 gyr_saker + 3/4 gyr_saker' else: return None except: pass # Передаем данные в функцию column = data['species_male'] column1 = data['species_female'] data['new'] = categorize_species(column, column1)
@timurazatovich5087
@timurazatovich5087 2 жыл бұрын
Если wrapper это объект функции, то почему когда вызываем check_access нам возвращают не объект wrapper, а результат работы wrapper? Результат работы check_access объект функции wrapper?
@avazart614
@avazart614 3 жыл бұрын
Есть ли где-то четкое определение что такое декоратор? И является ли всякие "@app.route()" по своей сути декораторами?
@user-th6xg5bk4c
@user-th6xg5bk4c 3 жыл бұрын
Да, является. Декоратор подменяет исходную функцию на "обертку", чтобы изменить поведение исходной функции. Про то, как делать декораторы принимающие дополнительные параметры я планирую записать видео.
@avazart614
@avazart614 3 жыл бұрын
@@user-th6xg5bk4c Разве @app.route() что-то куда то возвращает? Можно ли говорить при этом о подмене как таковой? Ведь это просто "регистрация"/"запоминание" ф-ции где-то внутри класса app ? Такая себе извращенная форма события и обработчика события-колбека.
@user-th6xg5bk4c
@user-th6xg5bk4c 3 жыл бұрын
route() возвращает функцию-обертку, которая дергает add_url_rule() - вот тут в коде можно посмотреть github.com/pallets/flask/blob/1.1.x/src/flask/app.py#L1288
@avazart614
@avazart614 3 жыл бұрын
@@user-th6xg5bk4c Да я про то что там в коде по сути нет "обворачивания" т.е. возвращается та же ф-ция что и принимается, нет как таковой "подмены" ф-циикоторая так присуща декораторам более того она не будет вызываться в явно в пользовательском коде как таковая.
@user-et4wn4kb8g
@user-et4wn4kb8g 2 жыл бұрын
Ни чего не понял ((
@user-ti7jk9yd4t
@user-ti7jk9yd4t 2 жыл бұрын
Возможно станет понятнее если посмотрите как работают замыкания. А перед этим нужно разобраться как работают функции.
Как использовать *args и **kwargs в python?
11:22
Хитрый питон
Рет қаралды 6 М.
EVOLUTION OF ICE CREAM 😱 #shorts
00:11
Savage Vlogs
Рет қаралды 3,6 МЛН
Эффект Карбонаро и нестандартная коробка
01:00
История одного вокалиста
Рет қаралды 9 МЛН
Double Stacked Pizza @Lionfield @ChefRush
00:33
albert_cancook
Рет қаралды 84 МЛН
БАБУШКИН КОМПОТ В СОЛО
00:23
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 15 МЛН
Что такое атрибуты класса в python?
8:42
Хитрый питон
Рет қаралды 4,5 М.
Декораторы Python | Разбираем Декораторы  С Примерами Кода
10:28
PyLounge - программирование на Python и всё о IT
Рет қаралды 17 М.
Как устроены итераторы в Python?
11:13
Хитрый питон
Рет қаралды 15 М.
Декораторы в Python
19:45
Программирование 2.0
Рет қаралды 13 М.
Управление памятью в python
10:20
Хитрый питон
Рет қаралды 18 М.
Улучшаем код с помощью генераторов
6:56
Хитрый питон
Рет қаралды 4 М.
EVOLUTION OF ICE CREAM 😱 #shorts
00:11
Savage Vlogs
Рет қаралды 3,6 МЛН