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

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

Хитрый питон

Хитрый питон

3 жыл бұрын

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

Пікірлер: 21
@grandpraline
@grandpraline Жыл бұрын
Спасибо за такие хорошие пояснения. Пока еще не всегда успеваю уследить, но ваша способность понятно объяснять на очень высоком уровне, как и чистота речи :)
@artemsukharenko4877
@artemsukharenko4877 3 жыл бұрын
Есть таки замечание: Декоратор это не какая то фишка питона - это паттерн и он реализуется в любом ЯП где есть функции высшего порядка. Собственно синтакисис, через собачку это просто сахарок для нас любимых. Не понимаю почему это скрывается - но на собесах этим просто уничтожают ахахаха
@Mr.Fix_man
@Mr.Fix_man 8 ай бұрын
Я понял декораторы😂😂😂😂😂 Вот это да😮😮😮 Спасибо за шикарное объяснения. Вставлял в проект декоратор для подсчета работы функций, но не понимал как работает😅
@FoodMaks
@FoodMaks 3 жыл бұрын
Спасибо большое автору за быстрые и логичные комментарии. Всем советую подписку и лайк.
@memeger89
@memeger89 2 жыл бұрын
Хорошо объясняешь, спасибо
@irno8526
@irno8526 Жыл бұрын
Лучшее объяснение
@sainco3036
@sainco3036 3 жыл бұрын
Спасибо.
@user-ti7jk9yd4t
@user-ti7jk9yd4t 2 жыл бұрын
Лучшее объяснение декораторов из всех, что я видел
@sergioborussa
@sergioborussa 2 жыл бұрын
Михаил Корнеев 👍
@user-iz4rw6xy8m
@user-iz4rw6xy8m 2 жыл бұрын
Приветствую, не знаете ли вы где можно попрактиковать декораторы, а то не совсем ясно. Спасибо!
@mustakrakish3388
@mustakrakish3388 7 ай бұрын
Спасибо, очень интересный пример) Везде данная тема обезличена, а тут живой пример)
@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?
@irno8526
@irno8526 Жыл бұрын
Вот эти наслоения. Усложнение и добавление синтаксиа по нарастающей. Это блестяще. Господи, спасибо Вам огромное😢 наконец понятно все и до конца
@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
Python Russian
Рет қаралды 14 М.
WHY THROW CHIPS IN THE TRASH?🤪
00:18
JULI_PROETO
Рет қаралды 9 МЛН
1🥺🎉 #thankyou
00:29
はじめしゃちょー(hajime)
Рет қаралды 82 МЛН
When Jax'S Love For Pomni Is Prevented By Pomni'S Door 😂️
00:26
Управление памятью в python
10:20
Хитрый питон
Рет қаралды 18 М.
ДЕКОРАТОР PYTHON / ВСЕ ЧТО НУЖНО ЗНАТЬ НА СОБЕСЕ
28:31
Сергей Соловьев
Рет қаралды 1,7 М.
Как использовать *args и **kwargs в python?
11:22
Хитрый питон
Рет қаралды 6 М.
Как устроены итераторы в Python?
11:13
Хитрый питон
Рет қаралды 14 М.
Декораторы Python | Разбираем Декораторы  С Примерами Кода
10:28
PyLounge - программирование на Python и всё о IT
Рет қаралды 16 М.
Python @staticmethod
15:38
luchanos
Рет қаралды 1 М.
Декораторы и модуль functools
1:09:10
Computer Science Center
Рет қаралды 39 М.