Декораторы в Python

Sdílet
Vložit
  • čas přidán 4. 07. 2024
  • В этом видео мы поговорим о декораторах в Python. На собеседованиях о них часто спрашивают. Мы детально рассмотрим механизмы работы декораторов на примере lru_cache из functools и сами напишем его простенький аналог. Узнаем как делаеть декораторы на основе функций и классов, какие вспомогательные инструменты для этого есть, как делать декораторы с параметрами и что можно декорировать с их помощью. И даже рассмотрим совсем уж экзотические примеры того, что может быть использовано в качестве декоратора.
    0:00 Вступление
    0:51 Последовательность Фибоначчи
    1:54 Медленная рекурсия
    2:43 Ускорили с декоратором lru_cache
    3:46 Что такое декоратор?
    4:47 Самый простой декоратор
    5:03 Чуть усложняем
    5:46 Делаем более универсально
    6:44 Свой кеширующий декоратор
    8:01 Декораторы сломали атрибуты
    8:58 Чиним ручным копированием
    9:35 Чиним с помощью wraps
    10:18 Декоратор с параметрами
    12:23 Класс как декоратор
    14:59 Подменили функцию объектом
    15:25 Декорируем двумя декораторами
    15:47 В каком порядке применяются декораторы?
    16:45 Декораторы для классов
    18:10 Извращаем идею декораторов
    19:27 В следующем видео

Komentáře • 36

  • @user-xv4hl4ue5x
    @user-xv4hl4ue5x Před 3 lety +13

    Хорошо получается объяснять новые видео записывай. Не останавливаться.

  • @user-dq9lk9id3b
    @user-dq9lk9id3b Před 2 lety +2

    Классный урок! Побольше бы таких наглядных уроков!

  • @vladimiru8602
    @vladimiru8602 Před 3 lety +4

    О, канал совсем молодой, оказывается. Вообще не подумал бы, качество - топ 👍
    Не знал раньше про декораторы, было очень полезно. Спасибо автору. И ютубу, что привёл меня сюда.(просто всплыло в рекомендациях, я специально не искал)

  • @kavajno
    @kavajno Před rokem +1

    Неплохо рассказано о декораторах. Я много промотрел виде ваше лучшее. Не все умеют доносить информацию

  • @Michael201078
    @Michael201078 Před 3 lety

    Отлично! Просто отлично обьяснил. Спасибо!

  • @___DS___
    @___DS___ Před 3 lety +4

    спасибо, одно из самых понятных объяснений про декораторы. Продолжай! Подписка.

  • @MrStockgolm
    @MrStockgolm Před 3 lety +1

    Круто , спасибо)

  • @somebodysomeone3054
    @somebodysomeone3054 Před 3 lety +1

    Понятно и полезно!

  • @danilfg
    @danilfg Před 2 lety

    Спасибо за видео!
    Стало понятнее.

  • @evgenyzev4265
    @evgenyzev4265 Před 3 lety

    Отлично!

  • @-MaCkRage-
    @-MaCkRage- Před 3 lety

    Я не знаю кто Вы, но объясняете вы прекрасно. Спасибо.

  • @hinomuratomisaburo4901

    Прикольно 😃

  • @89inoj
    @89inoj Před 3 lety +1

    Автор, продолжай запись.
    У тебя действительно хорошо получается.

  • @user-pq6jv2hr5c
    @user-pq6jv2hr5c Před 3 lety +1

    Автор, у тебя отлично получается. Почему так мало роликов выкладываешь? Давай ещё)

  • @letronas
    @letronas Před 11 měsíci

    Может для jupyter не надо, но в PyCharm вам нужно будет сделать импорт
    from functools import wraps
    Чтобы воспользоваться декоратором wraps.
    P.S. Самое понятное и живое объяснение декораторов, особенно с параметрами.

  • @evgen4055
    @evgen4055 Před 3 lety

    подписка

  • @pyatsyshin
    @pyatsyshin Před 3 lety

    А как выудить значение cnt при таком порядке декора:
    @lru_cache
    @counter
    def fib():
    ...

  • @user-qq9lu5zu8o
    @user-qq9lu5zu8o Před 3 lety +1

    Очень хорошее объяснение, про дефолтные декораторы обычно забывают упомянуть. Что на очереди? итераторы и генераторы может быть?)

    • @user-tn4pv9xh2s
      @user-tn4pv9xh2s  Před 3 lety +1

      Descriptor Protocol, но да, генераторы и менеджеры контекста, тоже хороший вариант.

    • @exe88cution
      @exe88cution Před 3 lety

      @@user-tn4pv9xh2s так когда ждать?)

  • @gienek_mscislawski
    @gienek_mscislawski Před 2 lety +2

    То ли я утомился за день, то ли уровень сложный, то ли максимально много упущено мест, где можно прокомментировать подробнее. В общем сложнее, чем в прочих видео на YT.

    • @efenof
      @efenof Před rokem

      Да, сложно объясняет, смотрю его когда уже выучу, для повторения

  • @dimamihalev2986
    @dimamihalev2986 Před 3 lety

    Друг, лучше расскажи про парсеры футбола пожалуйста

  • @user-bd4jn6cy1k
    @user-bd4jn6cy1k Před 2 lety

    Что за IDE в которой ты пишешь код?

  • @jokeantishev9557
    @jokeantishev9557 Před 3 lety

    Вот весь lru_cache на практике при том же коде: TypeError: Expected maxsize to be an integer or None
    В чём же ошибка?

    • @user-tn4pv9xh2s
      @user-tn4pv9xh2s  Před 3 lety +1

      Полагаю, версия Python ниже чем у меня (3.8.1). Можно либо попробовать версию Python 3.8 и выше, либо попробовать не @lru_cache, а @lru_cache()

    • @jokeantishev9557
      @jokeantishev9557 Před 3 lety

      @@user-tn4pv9xh2s Да, скобочки поставил и заработало)

  • @radunov.a
    @radunov.a Před 2 měsíci

    Ощущение, что на функции Фибоначчи не самый лучший способ показать декораторы

  • @getteg6468
    @getteg6468 Před 2 lety

    так что такое декоратор, нифига не понял

  • @You_wont_forget
    @You_wont_forget Před 3 lety +1

    Рассказал хорошо, где дескрипторы?

  • @maksimvolkov8892
    @maksimvolkov8892 Před 5 měsíci

    Господи, если вы кодер и вам нужно двадцати минутное видео, что бв понять декораторы, может программирование это не ваше?

    • @asd1978ful
      @asd1978ful Před 5 měsíci

      Все понятно в двух случаях: когда действительно понял и когда на самом деле не разобрался. Декораторы - достаточно сложный и объёмный момент в python. И двадцати минут на самом деле мало, если только у вас не второй вариант.