Тёмный

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

Хитрый питон
Подписаться 9 тыс.
Просмотров 14 тыс.
50% 1

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

Опубликовано:

 

1 мар 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 21   
@grandpraline
@grandpraline Год назад
Спасибо за такие хорошие пояснения. Пока еще не всегда успеваю уследить, но ваша способность понятно объяснять на очень высоком уровне, как и чистота речи :)
@artemsukharenko4877
@artemsukharenko4877 3 года назад
Есть таки замечание: Декоратор это не какая то фишка питона - это паттерн и он реализуется в любом ЯП где есть функции высшего порядка. Собственно синтакисис, через собачку это просто сахарок для нас любимых. Не понимаю почему это скрывается - но на собесах этим просто уничтожают ахахаха
@Mr.Fix_man
@Mr.Fix_man 8 месяцев назад
Я понял декораторы😂😂😂😂😂 Вот это да😮😮😮 Спасибо за шикарное объяснения. Вставлял в проект декоратор для подсчета работы функций, но не понимал как работает😅
@FoodMaks
@FoodMaks 3 года назад
Спасибо большое автору за быстрые и логичные комментарии. Всем советую подписку и лайк.
@irno8526
@irno8526 11 месяцев назад
Лучшее объяснение
@memeger89
@memeger89 2 года назад
Хорошо объясняешь, спасибо
@user-ti7jk9yd4t
@user-ti7jk9yd4t 2 года назад
Лучшее объяснение декораторов из всех, что я видел
@sainco3036
@sainco3036 3 года назад
Спасибо.
@mustakrakish3388
@mustakrakish3388 6 месяцев назад
Спасибо, очень интересный пример) Везде данная тема обезличена, а тут живой пример)
@sergioborussa
@sergioborussa 2 года назад
Михаил Корнеев 👍
@user-iz4rw6xy8m
@user-iz4rw6xy8m 2 года назад
Приветствую, не знаете ли вы где можно попрактиковать декораторы, а то не совсем ясно. Спасибо!
@irno8526
@irno8526 11 месяцев назад
Вот эти наслоения. Усложнение и добавление синтаксиа по нарастающей. Это блестяще. Господи, спасибо Вам огромное😢 наконец понятно все и до конца
@thebijou1067
@thebijou1067 10 месяцев назад
Добрый день, Михаил! Спасибо за видео: все доступно и хорошим языком объяснено. Я только начинаю остаивать 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 Год назад
Если 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 года назад
Возможно станет понятнее если посмотрите как работают замыкания. А перед этим нужно разобраться как работают функции.
Далее
Замыкания (Closures) в Python
30:54
Просмотров 14 тыс.
ПООСТЕРЕГИСЬ🙊🙊🙊
00:39
Просмотров 12 млн
Python @staticmethod
15:38
Просмотров 1 тыс.
Декораторы в Python
19:45
Просмотров 13 тыс.
Управление памятью в python
10:20
Просмотров 18 тыс.
Декораторы и модуль functools
1:09:10
Просмотров 39 тыс.
Декоратор с параметрами
19:39
Просмотров 8 тыс.