Декораторы в Python Часть 1. Decorator Python

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 เม.ย. 2020
  • 🔥🔥🔥 Инди-курс по Python 🔥🔥🔥
    stepik.org/course/63085/promo
    👉👉👉 Свой вопрос по курсу можешь задать в чате
    t.me/+SlnNhAO7caBlNDM6
    👉👉👉 Также подписывайся на мой телеграмм-канал
    t.me/python_egoroff
    Подробнее об урок
    egoroffartem.pythonanywhere.co...
    Замыкания в Python. Closure Python
    • Замыкания в Python. Cl...
    Замыкания в Python.Часть 2
    • Замыкания в Python Час...
    *args и **kwargs Python. Передача аргументов в функцию
    • 40 *args и **kwargs Py...
    stepik.org/course/63085/promo
    Курс на степике
    В данном уроке мы вспомним о замыканиях и на их основе научимся создавать декораторы.
    Декоратор - это функция, которая в качестве аргумента принимает другую функцию и возвращает функцию-замыкание. Декораторы нужны для расширения функционала переданной функции за счет обертки в замыкании
    Все видео этого курса можете найти на сайте
    egoroffartem.pythonanywhere.co...
    или в Вк
    videos-177962775?secti...
    Если кому нужна помощь, предлагаю индивидуальные занятия. Подробнее пишите в личку в вк
    artem_egoroff
    python.study
    В данном группе можете найти информацию о новых видео и задать вопросы

ความคิดเห็น • 162

  • @egoroffchannel
    @egoroffchannel  12 วันที่ผ่านมา

    🫵 Теория без практики - ничто, поэтому 👇
    🐍 stepik.org/course/63085/promo
    👉 специально для тебя создал бесплатный топовый курс по Python
    👉 В нем тебя ждет:
    📗 более 400 практических заданий на программирование
    📗 более 250 тестовых заданий на проверку материала
    📗 десятки часов видеоматерилов по теории
    📗 видеоразборы решения заданий
    📗 текстовые материалы по урокам, примеры кода
    📗 доступ к закрытому чату с дружественной обстановкой
    📗 сертификат в случае успешного прохождения курса

  • @orazovdidar
    @orazovdidar หลายเดือนก่อน +1

    Очень понятное и доступное объяснение. Благодарю Артем!

  • @user-bz4bo6ol2o
    @user-bz4bo6ol2o 3 ปีที่แล้ว +106

    Выглядит так, как будто один топовый кодер написал мегакачественный код и уволился, набрали кодеров попроще, которые боялись править этот прекрасный код и просто начали лепить вокруг него костыли и назвали эту штуку - декоратор )))

    • @vladislavbulanov625
      @vladislavbulanov625 2 ปีที่แล้ว +19

      объяснение лучше того что в видео

    • @1nparad1sepwnz79
      @1nparad1sepwnz79 ปีที่แล้ว +2

      хахахаахахахахахаха

    • @user-kg9du4ii9w
      @user-kg9du4ii9w 9 หลายเดือนก่อน +6

      абсолютно поддерживаю. если выкинуть из кода все эти дурацкие замыкания и обертывания - код работает так же, его меньше, читабельнее.
      сколько ни пытаюсь понять ЗАЧЕМ декораторы - нигде не могу найти ответ. везде пишут как они работают, но НИКТО не написал - зачем они.

    • @user-ib9uw3he1y
      @user-ib9uw3he1y 8 หลายเดือนก่อน

      @@user-kg9du4ii9w не знаю, будет ли актуально, но попробую объяснить
      В реальной разработке может быть тысячи строк кода, сотни функций и куча модулей и директорий.
      Допустим, логика вашего проекта построена так, что в одном из модулей вам понадобилось использовать функцию, которую вы уже написали, но с каким-то добавочным функционалом. (Допустим, вам нужно добавить какое-то простенькое вычисление или вывести что-нибудь на экран)
      И вот вместо того, чтобы копировать функцию из прошлого модуля, вставлять её в новый модуль, изменять её название и добавлять этот функционал, проще написать декоратор :)
      Вы просто импортируете старую функцию, вешаете на неё декоратор и вуаля, готово. Можно использовать получившуюся функцию почти с тем же функционалом, не тронув старую и ничего не поломав в уже написанном коде

    • @Nina-hy4ql
      @Nina-hy4ql 3 หลายเดือนก่อน

      @@user-kg9du4ii9w Говорят же, для расширения функционала функции. Когда вам не нужно менять декорируемую функцию полностью, но в конкретном месте нужно несколько изменить ее поведение.

  • @user-bq7hh5gr5f
    @user-bq7hh5gr5f ปีที่แล้ว +1

    Найбільш зрозумілий урок з тих що я подивився, дякую.

  • @osvab000
    @osvab000 4 ปีที่แล้ว +18

    Спасибо огромное - хоть начал разбираться, что такое декораторы, а то вначале казалось лес непроходимый.

  • @martincatus
    @martincatus ปีที่แล้ว +8

    bye: Дорогой дневник, мне не подобрать слов, чтобы описать боль и унижение, которое я испытал. 😁

  • @luv7365
    @luv7365 ปีที่แล้ว +21

    Очень доступно и понятно. Было несколько заходов разобраться в этой теме, благодаря тебе стало яснее. Огромное спасибо!)

    • @1nparad1sepwnz79
      @1nparad1sepwnz79 ปีที่แล้ว

      Полностью согласен) я только с 4 захода разобрался что такое декараторы, просматривая 4 видео по 4 раза начиная со вложенных функций)

  • @user-ww5fe4on6y
    @user-ww5fe4on6y 2 ปีที่แล้ว +1

    Начало ролика - суперпонятное, спасибо. За первые 3 минуты 25 секунд - респект.

  • @k1ntoho
    @k1ntoho 4 ปีที่แล้ว +5

    Нужная вещь. Спасибо, что рассказали

  • @user-bj9hd1bc4j
    @user-bj9hd1bc4j ปีที่แล้ว +5

    Спасибо, это очень качественное объяснение! Учу python по книге, но рекурсивные функции, замыкания и декораторы там были описаны таким сложным языком. Пришлось искать материал по этим темам в интернете. Так я нашёл ваш плейлист по python, и это реально крутой плейлист!)

  • @user-wk9dl9lu2t
    @user-wk9dl9lu2t ปีที่แล้ว +5

    Я декораторы начал изучать после того, как захотел написать телеграм-бот, и тут Остапа понесло... >>> Что такое декораторы >>> что такое замыкание >>> что такое вложенные функции....что такое глобальные, локальные и иже с ними переменные.... Как будто квесты в игре проходишь, берешь один квест, по дороге еще 10 штук набираешь))) Зато тренируешься, вспоминаешь основы, закрепляешь их и т.д.

    • @aace6333
      @aace6333 หลายเดือนก่อน +1

      +++ где-то год назад уже смотрел весь этот курс, пришлось напоминать себе что такое замыкание

  • @AnnaIsHere
    @AnnaIsHere 2 ปีที่แล้ว +21

    Это было божественное объяснение. Структурированно, не слишком быстро, советы про *args и *kwargs. Благодарю.

  • @user-ee1lx1pe7n
    @user-ee1lx1pe7n 3 ปีที่แล้ว +2

    Прекрасно все объяснил! Большое спасибо))))))

  • @user-rw2ig6nb5l
    @user-rw2ig6nb5l 3 ปีที่แล้ว +1

    Большое спасибо, Артем.

  • @orthodox_channel
    @orthodox_channel ปีที่แล้ว +2

    наконец все стало понятно

  • @laikaboss9047
    @laikaboss9047 4 ปีที่แล้ว +5

    Ты вообще красава! Все понятно и информативно) Продолжай в том же духе и не забрасывай канал))

  • @shipovalovv
    @shipovalovv 6 หลายเดือนก่อน

    наконец то, хоть кто-то доступно на пальцах объяснил 👍

  • @user-to9qz4ks4j
    @user-to9qz4ks4j ปีที่แล้ว +1

    О, какая крутая штука ! Спасибо большое за доступное объяснение!

  • @Toksi86
    @Toksi86 3 ปีที่แล้ว +1

    Очень доступно. Спасибо

  • @ES-ng3el
    @ES-ng3el 7 หลายเดือนก่อน

    Все понятно и доходчиво. Спасибо.

  • @user-ck3bl1hy2c
    @user-ck3bl1hy2c ปีที่แล้ว +1

    Купи мир.... Такой интересный призыв)))

  • @Taridonov
    @Taridonov 3 ปีที่แล้ว +2

    жирный лайк, спасибо большое Вам.

  • @user-nu6jv9qp7c
    @user-nu6jv9qp7c ปีที่แล้ว +1

    Я кажется понел, благодарю!

  • @user-wk9dl9lu2t
    @user-wk9dl9lu2t ปีที่แล้ว +3

    Твои объяснения для меня пока что лучшие, я их понимаю (может и не с первого раза), но со второго точно)))

  • @kolobroadgh8532
    @kolobroadgh8532 2 ปีที่แล้ว +5

    Очень круто и информативно)
    Подача информации просто невероятна)

  • @Ruslan501
    @Ruslan501 2 ปีที่แล้ว

    Артем, спасибо большое!

  • @galinaoliver5624
    @galinaoliver5624 ปีที่แล้ว +1

    Круууто!

  • @maskanews
    @maskanews 4 ปีที่แล้ว +10

    Офигенно. Реально каждое действие объясняете и всё максимально понятно) Подписка

    • @user-fw7dn9ib1j
      @user-fw7dn9ib1j 3 ปีที่แล้ว +1

      Что? Каждое действие ?Сам себя похвалил и наоайкал. "Чтобы понимать декораторы нужно знать замыкание, вот эта функция будет замыканием..." ништяк обьяснюха...продолжу а вот это декоратор не хуже обьяснил правда?

    • @kadencode5347
      @kadencode5347 2 ปีที่แล้ว

      @@user-fw7dn9ib1j чел, надо было курс смотреть этот... он об замыканиях говорил...

  • @user-xr2cz1ky6s
    @user-xr2cz1ky6s ปีที่แล้ว +1

    Тёма, ты лучший

  • @alibekjusupov9577
    @alibekjusupov9577 3 ปีที่แล้ว +1

    Спасибо за видео!

  • @kotart3938
    @kotart3938 5 หลายเดือนก่อน

    Я на платном курсе обучаюсь и без видосов в ютубе никак.
    Сейчас происходит то, что я с помощью твоих видео лучше все усваиваю. Либо это до меня доходит со второго раза (типа шлифую те знания, что получил на курсе), либо ты очень хорошо все раскладываешь)
    Но в любом случае, комментарий для всех:
    Чтобы понять тему с декораторами, советую начать с просмотра видео "Вложенные функции" и поочереди идти по каждому видосу. Сейчас я наконец-то все понял) Спасибо)

  • @Lottivozlar_community
    @Lottivozlar_community ปีที่แล้ว +1

    до этого видео я не понял что такое дикораторы, спасибо вам большое 🙂

  • @autostyle8170
    @autostyle8170 ปีที่แล้ว +2

    Спасибо за доступ ко всем материалам, после окончания курса по питону, буду брать ООП

  • @VladimirGavr
    @VladimirGavr 2 ปีที่แล้ว

    Спасибо, тебе, дружище!!)

  • @victoriacare6156
    @victoriacare6156 4 ปีที่แล้ว +1

    а так спасибо все равно))) понимаю что вас нужно поддерживать!

  • @user-ww5fe4on6y
    @user-ww5fe4on6y 2 ปีที่แล้ว

    весь ролик очень понятный

  • @magiclake9454
    @magiclake9454 3 ปีที่แล้ว +6

    твоё видео помогло мне, другие не помогали. Я так и не вынимал суть декораторов до твоего видео. Спасибо большое! Продолжай в том же духе! :) Подписался и разослал друзьям.

  • @user-hn7gb9ej9d
    @user-hn7gb9ej9d 4 ปีที่แล้ว +3

    Спасибо!

  • @nicasmirnovaa
    @nicasmirnovaa ปีที่แล้ว +1

    спасибо за видео

  • @user-ih9wz3vh7y
    @user-ih9wz3vh7y 2 ปีที่แล้ว +3

    Почему нельзя сказать что декоратор выставляет перед функцией в него входящей как раз таки декоративное сообщение или элемент, и так же может сделать после результата функции в нём? Понапишут своих высокоинтеллектуальных текстов, а потом переводи на человеческий по пол часа.

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 2 ปีที่แล้ว

    Супер подача!
    По качеству нахожу сходство c Ильёй Кантором, я у него Git изучал по роликам

  • @velomatica
    @velomatica 4 ปีที่แล้ว +9

    Обязательно оформлю подписку на тебя. У меня по питону только ты и Олег Молчанов в приоритетах

    • @RomanZverev-yc5qc
      @RomanZverev-yc5qc 2 ปีที่แล้ว

      @Askhat Moldakasym тоже очень годный канал)

    • @schmoopiegrob8758
      @schmoopiegrob8758 2 ปีที่แล้ว

      как успехи спустя год?

    • @velomatica
      @velomatica 2 ปีที่แล้ว

      @@schmoopiegrob8758 blog на flask
      второй после молчанова

  • @TheReasterTR3
    @TheReasterTR3 4 ปีที่แล้ว +2

    Как всегда все офигенно)

  • @LimarDeWills
    @LimarDeWills 4 ปีที่แล้ว +4

    Спасибо Вам за уроки

  • @user-ss3kn9sc8m
    @user-ss3kn9sc8m ปีที่แล้ว

    Хороший комментарий для Артёма

  • @ameno095
    @ameno095 4 ปีที่แล้ว +4

    Super. Spasibo ogromnoe!

  • @ankhmarcius8331
    @ankhmarcius8331 4 ปีที่แล้ว +1

    наконец то я всё понял

  • @user-bn4kd5iw8n
    @user-bn4kd5iw8n 3 หลายเดือนก่อน +1

    Из всех лекций Артёма, эту я так и не понял, от слова "совсем". Постоянные перескоки с одной функции на другую, и для чего это нужно в коде, так и осталось большой загадкой!

  • @alexeysirota1865
    @alexeysirota1865 3 ปีที่แล้ว +1

    Огромнейшее спасибо, самое доходчивое обьяснение декораторов

    • @ozen950
      @ozen950 ปีที่แล้ว

      Точно! Если, конечно, других не слышал.

  • @user-ke4ss2bg9k
    @user-ke4ss2bg9k 4 ปีที่แล้ว +4

    О наконец классный контент поддерживаю автора

  • @m1x412
    @m1x412 3 ปีที่แล้ว +3

    Спасибо за урок.
    PS. Купить Мир.

  • @ildarEGE
    @ildarEGE 2 ปีที่แล้ว +1

    Спасибо) Очень просто объяснил

  • @Dm-if3vl
    @Dm-if3vl 3 ปีที่แล้ว +1

    Спасибо

  • @user-hi1bw5gb3r
    @user-hi1bw5gb3r 2 ปีที่แล้ว +5

    Что-то тяжко даётся эта тема. Надеюсь на практике станет понятнее.

  • @apocalypsesoon4828
    @apocalypsesoon4828 10 หลายเดือนก่อน

    Одно из лучших объяснений , по книгам и по лекциям не очень понятно

  • @user-rn3nr4tc7b
    @user-rn3nr4tc7b 2 ปีที่แล้ว

    Что делать, если превышена глубина вложенности? Речь идет о фрагменте кода на 4:05, подскажите кто столкнулся тоже

  • @duck0154
    @duck0154 3 ปีที่แล้ว

    *ТоП* !

  • @brutsmart
    @brutsmart 11 หลายเดือนก่อน

    топчик

  • @user-fu8vp1he5z
    @user-fu8vp1he5z 2 ปีที่แล้ว +1

    Т.е. оригинальную функцию без обертки уже не вызвать в данном случае?

  • @Strongflight
    @Strongflight 2 ปีที่แล้ว +2

    Поясните пожалуйста (ролик 3:02):
    Когда объявляем, что say будет вызывать функцию декоратора, мы же просто объявляем переменную say, а не пере объявляем функцию, какой смысл в этом?

    • @poliklopik6774
      @poliklopik6774 ปีที่แล้ว

      Не знаю, актуален ли еще вопрос, но на всякий постараюсь пояснить. Все в питоне является объектами, которым можно присвоить имя. Так любая функция является объектом с именем (то, что идет после def). В 16 строке его кода мы просто говорим, что теперь в переменной say будет лежать не старая функция, которая просто пишет привет мир, а там лежит результат работы decorator, то бишь ссылка на функцию inner, которая использует в своем функционале «старую» функцию say.

  • @user-cv3sc6qi2e
    @user-cv3sc6qi2e 4 ปีที่แล้ว +31

    А твой преподаватель был не случайно Тимофей Хирьянов?😏

  • @goalkeeperpro6516
    @goalkeeperpro6516 4 ปีที่แล้ว +2

    Добрый день
    У меня давно был вопрос
    По какой формуле можно посчитать интеграл и интегральные числа в python?

    • @kandreyk9159
      @kandreyk9159 4 ปีที่แล้ว +1

      from sympy import *
      var('x')
      integrate(sin(x), x)

    • @vladimirkuchin1677
      @vladimirkuchin1677 11 หลายเดือนก่อน

      Пакеты математические, например, SciPy, SymPy поддерживают такие вычисления. Плюс есть численные методы, позволяющие вычислять интегралы (метод Симпсона, 3/8, трапеций и т.д.)

  • @user-ke8gc3he6f
    @user-ke8gc3he6f 2 ปีที่แล้ว

    Только благодаря этоому видео я понял что такое декораторы. Спасибо!

  • @user-zt1zh1bp2d
    @user-zt1zh1bp2d 2 ปีที่แล้ว

    Привет. Мне нужно разработать декоратор to_lower, который будет переводить все строковые аргументы (как именованные, так и не именованные) декорируемой функции в нижний регистр. Мой код def to_lower(func):
    def to_lower(func):
    def wrapper(*args, **kwargs):
    func(*args, **kwargs)
    return func(*args, **kwargs).lower()
    return wrapper При это Выводиться ошибка 'NoneType' object has no attribute 'lower'. В чем ошибка.
    Еще просьба сообщить если видео по генераторам. Заранее спасибо.

  • @jamjam3337
    @jamjam3337 ปีที่แล้ว

    👍

  • @_Kruzo_
    @_Kruzo_ 8 หลายเดือนก่อน +1

    Артем, Вы прекрасно все объяснили...но я ни хера не понял даже с третьего раза :(

  • @konstantinvyacheslavovich8217
    @konstantinvyacheslavovich8217 5 หลายเดือนก่อน

    Я вообще все что запомнил что у него есть платный канал

  • @Tolya421.
    @Tolya421. 3 ปีที่แล้ว +1

    Блин, две недели, две недели бился т только щас въехал 😂 Спасибо за уроки!

  • @bambimbambas
    @bambimbambas 3 ปีที่แล้ว +1

    Я до сих пор не понимаю больше половины материала, но понял, хоть что-то, когда поигрался с кодом тут:
    www.pythontutor.com/visualize.html#mode=edit
    Ещё вот таким кодом:
    def decorator(func):
    def inner(string):
    print('sub 1')
    func()
    print('sub 3')
    def catch():
    string()
    return catch
    return inner

    def say():
    print('sub 2')
    decorator(say)(say)()

    • @RomanZverev-yc5qc
      @RomanZverev-yc5qc 2 ปีที่แล้ว

      Где вы взяли такой интересный пример?)

  • @victoriacare6156
    @victoriacare6156 4 ปีที่แล้ว

    жаль в кризис не могу стать патрионом, не посмотреть многих видео

  • @rahmatj0n
    @rahmatj0n 4 ปีที่แล้ว

    Привет
    Какие модули надо знать для создания нормальной программ в питон

    • @user-gh1nb7dv2g
      @user-gh1nb7dv2g 4 ปีที่แล้ว

      Смотря какой тип программы?
      Web приложения, desktop & mobile приложения, скрапперы, игры, Искусственный интелект?

    • @rahmatj0n
      @rahmatj0n 4 ปีที่แล้ว

      @@user-gh1nb7dv2g например decktop

    • @rahmatj0n
      @rahmatj0n 4 ปีที่แล้ว

      Для всех этих задач есть отдельные модули ?

    • @user-gh1nb7dv2g
      @user-gh1nb7dv2g 4 ปีที่แล้ว

      ​@@rahmatj0n Конечно, одним модулем ты все не сделаешь, тем более с модулем.
      Научись Фреймворкам. Для Desktop & Mobile приложений у Python есть фреймворк Kivy, для сайтов Django & Flask, для скрепперов Scrapy.
      И чтобы эффективно работать со всем этим тебе нужно знать разные модули.

    • @rahmatj0n
      @rahmatj0n 4 ปีที่แล้ว

      @@user-gh1nb7dv2g С чего начать

  • @SemyonMazepin
    @SemyonMazepin 9 หลายเดือนก่อน

    Как эта собака работает? Почему именно в том месте?

  • @murshig5370
    @murshig5370 3 ปีที่แล้ว +2

    Купить мир.Панимаю

  • @python3815
    @python3815 4 ปีที่แล้ว

    Как купить спонсорство ,номер карты не идёт,всё ввёл номер карты не идёт а ввёл всё правильно ?????

    • @egoroffchannel
      @egoroffchannel  4 ปีที่แล้ว

      Это не ко мне вопросы. Либо с картой проблемы, либо с ютубом или патреоном

    • @user-np6pe4uh1t
      @user-np6pe4uh1t 4 ปีที่แล้ว

      @@egoroffchannel у меня есть приложение которое требует обновлений модулей внутри неё, приложение прислали, и обычный Пип инсталл не работает, также модули я скачиваю через pip instal trusted host....... Потому что проблема с ссл сертификатом, так как обновить модули внутри приложения?

  • @user-xm5lz6tb7h
    @user-xm5lz6tb7h 2 ปีที่แล้ว

    прям множественное наследование с полиморфизмом какоето)

  • @vahadg
    @vahadg 2 ปีที่แล้ว

    Добрый день! Не могу понять, как аргумент функции func попадает в n в функции inner? По моей логике это нужно сделать так: def decor(func, arg): def inner (): func(arg) ...

    • @user-wk9dl9lu2t
      @user-wk9dl9lu2t ปีที่แล้ว

      указывай тайм код, а то многое меняется в видео.

    • @user-wk9dl9lu2t
      @user-wk9dl9lu2t ปีที่แล้ว

      Сначала say становится inner, а затем уже вызывается якобы inner и уже в него передается аргумент n. Если не поймешь, попробую переобъяснить, раньше у самого проблемы с этим были) Главное посидеть, вникнуть, не торопится.

    • @capitulation27
      @capitulation27 ปีที่แล้ว

      @@user-wk9dl9lu2t Декораторы хорошо понимаете?)

    • @user-wk9dl9lu2t
      @user-wk9dl9lu2t ปีที่แล้ว

      @@capitulation27 из видео этого понял.

    • @capitulation27
      @capitulation27 ปีที่แล้ว

      @@user-wk9dl9lu2t А что-то параллельно читаете?

  • @ne_psixyu
    @ne_psixyu ปีที่แล้ว +1

    "Hello world" and " Buy world" 🤣🤣🤣In my opinion, it should have been "Bye world, not Buy"

    • @AXGroser
      @AXGroser ปีที่แล้ว +1

      Мы купим весь мир)

  • @user-rl4om3nr5k
    @user-rl4om3nr5k 2 ปีที่แล้ว +5

    Чтобы понять то, что здесь рассказываю, посмотри предыдущий материал, но он платный. Прикольно)) Автор конечно сам решает, как монетизировать контент, но как то смысла нет тогда здесь что-то искать полезное, когда ту же информацию можно получить на соседнем канале бесплатно. Понятно, что по ютубу не выучишь питон, информация не систематезирована, так еще и неотделимая часть только для спонсоров. Тогда имеет смысл весь контент только по подписке. Подумал тут еще, что стоимость живого подписчика (не бота) в схожей тематике на 2021г, если привлекать его через рекламу (например адвордс), может колебаться до 150-250 р. Не хотелось бы, чтобы кнопка "Спонсировать" и жадность авторов, убили бы тему доступного образования на Ютуб. Возможности для заработка у канала то никто не отнимал - вон и ссылки на продвижение платных продуктов в описании. Такой способ монетизации больше похож на манипуляцию) В итоге, потратил время, вопрос остался не закрыт. Вопрос: зачем мне такой канал в подписках? Да вроде не зачем. Развернутый коммент для продвижения видео - в подарок;) Отписка.

  • @user-cs9wt9ob8o
    @user-cs9wt9ob8o 6 หลายเดือนก่อน

    "buy world" - амбициозно...

  • @user-vr8fc7by2s
    @user-vr8fc7by2s 3 ปีที่แล้ว

    Обьяснитн максимально просто что значит вернуть вложенную функцию без вызова пожалуйста

    • @egoroffchannel
      @egoroffchannel  3 ปีที่แล้ว

      th-cam.com/video/To2Q7bRubHw/w-d-xo.html
      вот здесь говорится, что такое ВЫЗОВ объекта

  • @user-bt2kt2cg7f
    @user-bt2kt2cg7f 4 ปีที่แล้ว

    Блин, Артем, как же это бесит. В твоем курсе по Python на Stepik не показывается этот долбанный неправильный тест, поэтому из-за этого одно задание можно решать неделю т.к я не могу понять, почему Failed test #4 of 16. Хоть я подставляю все возможные значения и программа работает, но ответ не засчитывается. КАК ЖЕ ЭТО РАЗДРАЖАЕТ(((

    • @egoroffchannel
      @egoroffchannel  4 ปีที่แล้ว

      курс еще в этапе разработки
      какое задание? и какое у тебя решение?

  • @Unknown-ws6im
    @Unknown-ws6im 4 หลายเดือนก่อน

    Непонятно зачем нужна функция inner. Я ее убрал из кода и все работает точно также

  • @user-gv8ee4fp8q
    @user-gv8ee4fp8q 3 ปีที่แล้ว

    Подскажите, пожалуйста, в чем может быть проблема? В последней строчке выводится результат, но в конце еще выводится None:
    def header(func):
    def inner(*args, **kwargs):
    print('')
    func(*args, **kwargs)
    print('/')
    return inner
    def table(func):
    def inner(*args, **kwargs):
    print('')
    func(*args, **kwargs)
    print('/table')
    return inner

    @header
    def f(x,y):
    print(x, y)

    print(f(10, 5))
    #
    #10 5
    #/
    #None

    • @egoroffchannel
      @egoroffchannel  3 ปีที่แล้ว

      в питоне что возвращает функция, когда не указан return?

    • @reqam7969
      @reqam7969 ปีที่แล้ว

      @@egoroffchannel true or false?

    • @gorin1337
      @gorin1337 ปีที่แล้ว

      @@reqam7969 None

  • @MP-pc9bo
    @MP-pc9bo 3 ปีที่แล้ว

    10:14 скрытый байт

  • @gpankov
    @gpankov ปีที่แล้ว

    А когда этотнужно на практике?

    • @serbon3905
      @serbon3905 ปีที่แล้ว

      В ооп много встроеных декораторов используются, @property @classmethod @staticmethod и подобное

  • @podvodnikk4562
    @podvodnikk4562 4 ปีที่แล้ว

    Как смотрю, так фольксваген напоминает: Садишься такой в машину норм комплектации, за последние бабки, а там куча зуглушек :). Типо чо не мог побогаче комплектацию купить, нищеброд. И не надо вот, что бесплатно... время тоже стоит. дороже ничего нет. Но автору респект. Понятно.

  • @Shked102
    @Shked102 3 ปีที่แล้ว

    привет мир, купить мир

  • @JuLia-mr7rn
    @JuLia-mr7rn ปีที่แล้ว

    Привет мир, я хочу тебя купить... ))) --buy--

  • @ded6911
    @ded6911 3 ปีที่แล้ว +1

    Купи мир

  • @chrisrogers3795
    @chrisrogers3795 ปีที่แล้ว +3

    Вообще ничего непонятно, что откуда берётся, почему в функцию пишем не заданные перменные. Я вообще в шоке, что код этот запускается, это видимо магия какая-то программирования. Тут переменная ля функций задаётся лишь в самом конце, крч бред, я пока не понимаю.

  • @aleksandrfareast
    @aleksandrfareast 4 ปีที่แล้ว +7

    Объясняет как боженька, но стал жадничать в последнее время) Хотя, согласен, что любой труд должен оплачиваться.

    • @azar4ik1
      @azar4ik1 4 ปีที่แล้ว +1

      Либо пусть полностью платный, либо нет.
      Неполная информация не имеет смысла. (как трейлер перед выходом фильма)

    • @forez7745
      @forez7745 3 ปีที่แล้ว +4

      @@azar4ik1 но благодаря трейлерам, мы можем захотеть пойти на фильм. Да и в целом понять что он из себя представляет

  • @user-fw7dn9ib1j
    @user-fw7dn9ib1j 3 ปีที่แล้ว

    Замыкание это не передача функции в функцию....это больше о замыкании ссылок на значение в памяти......исходя из этого обьяснение уже фундаментально не верно

  • @nikolaydd6219
    @nikolaydd6219 4 ปีที่แล้ว +6

    Ничего не понял.. Какой-то неудачный пример... Лучше на чем-нибудь полезном показывать, где это можно применить.

  • @andrexxelles
    @andrexxelles 3 ปีที่แล้ว

    А

  • @elkins87
    @elkins87 2 ปีที่แล้ว

    как-то слишком все запутано и непонятно

  • @DoktorZlo96
    @DoktorZlo96 4 ปีที่แล้ว

    Здрасьте: "Этот контент нельзя приобрести."

    • @egoroffchannel
      @egoroffchannel  4 ปีที่แล้ว

      значит вы не житель РФ
      на патреоне можно оформить спонсорскую подписку

    • @DoktorZlo96
      @DoktorZlo96 4 ปีที่แล้ว

      @@egoroffchannel не, патреон меня не интересует. жаль

    • @user-pb7dc1cw9g
      @user-pb7dc1cw9g 4 ปีที่แล้ว

      @@DoktorZlo96 vpn? Proxy?

  • @insideTheMirror_
    @insideTheMirror_ 3 ปีที่แล้ว

    How the fuck did I come here?

  • @jarefmozz9988
    @jarefmozz9988 2 ปีที่แล้ว

    Кто-то мне объяснит зачем декораторы нужны? Чтобы функция выводила дополнительную строку? ДОПИШИ В ФУНКЦИЮ МЛИН!! Унаследовать из другого участка кода? ИСПОЛЬЗУЙ НАСЛЕДОВАНИЕ и не порти код своего коллеги кодом, который теперь будет вызываться с его функцией всегда и о котором он ничего не знал!
    Такое впечатление что программисты просто любят себе проблемы создавать!

  • @user-xo6ui5el2l
    @user-xo6ui5el2l 2 ปีที่แล้ว

    Больно сложно пишешь, чем на самом деле. Для разнообразия хоть имена функциям давать разные

  • @user-gf6er4ug6g
    @user-gf6er4ug6g 2 ปีที่แล้ว

    Ну почему все "учителя" объясняют все исключительно через пень колоду?
    Декоратор decor это функция, которая берет в качестве аргумента функцию foo.
    После чего запись foo(без вызова) аналогично decor(foo)
    ВСЕ!!! Больше ничего мудрить не надо.
    def decor(Func):
    return Func.__doc__ + " decor run"
    @decor
    def foo():
    """My documents container"""
    pass
    result = foo #Не запускаем! Без @decor эта строчка будет result = decor(foo)
    #result получит не ссылку на foo а то что вернет decor
    print(result)
    # А если мы хотим чтоб foo еще и запускалась, то надо чтоб
    # decor возвращал функцию, причем не обязательно foo или то что в нее вложено
    # да и вообще decor не обязанна иметь return, в этом случае вернет None
    def decor(Func):
    print("decor run")
    return Func
    @decor
    def foo(): #здесь могут быть переменные
    print("foo run")
    foo() #Теперь можно запускать, без запуска сработает только decor
    #Но есть еще и запускаемые декораторы. Этот декоратор обязан вернуть ссылку на функцию, которая берет декорируемую функцию в качестве аргумента.
    def decor(Func):
    print("decor run")
    return Func
    def callable_decor():
    print("callable run")
    return decor
    @callable_decor() #здесь могут быть переменные
    def foo():
    print("foo run")
    foo()

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 ปีที่แล้ว +1

      ты думаешь лучше объяснил?
      вот читает новичок твой коммент: _"это функция, которая берет в качестве аргумента функцию foo. После чего запись foo(без вызова) аналогично decor(foo)"_
      сразу вопросы - что за foo такой? что такое "foo(без вызова)"?
      итд
      так что в своем глазу соломинку не видим

    • @user-gf6er4ug6g
      @user-gf6er4ug6g 2 ปีที่แล้ว

      @@Das.Kleine.Krokodil
      А для кого я кусок кода вставил? Ты чо не видишь кнопку "читать дальше"?
      Автор же нафигачил каких то заумностей, каких то сложных функций в функции, да еще и язык HTML зачем то сюда вогнал.
      А что касается "новичка"(не того которым Навального отравили) Так новичок, прежде чем изучать функции с декораторами, должен знать что такое просто функция, и что ее можно запускать.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 ปีที่แล้ว +1

      @@user-gf6er4ug6g у тебя плохой пример, потому что он ничего не делает и нет аргументов функций

    • @user-gf6er4ug6g
      @user-gf6er4ug6g 2 ปีที่แล้ว

      @@Das.Kleine.Krokodil Может и плохой, и не идеальный, но тут хотя бы передана основная идея декораторов, что строчка @decor перед def foo можно заменить строчкой foo = decor(foo) после ввода этих функций Это главное, то что автор так и не передал, а уж брать агрументы - это вообще частный случай.
      А то что здесь автор наворочал - мне ни фига не помогло разобраться. Пришлось методом научного тыка.

    • @user-gf6er4ug6g
      @user-gf6er4ug6g 2 ปีที่แล้ว

      ​@@Das.Kleine.Krokodil Я для кого писал строчку с комментарием "здесь могут быть переменные"? Прочитай сначала потом пиши.