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

🔥🔥🔥 Инди-курс по 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
В данном группе можете найти информацию о новых видео и задать вопросы

Пікірлер: 163

  • @egoroffchannel
    @egoroffchannel2 ай бұрын

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

  • @osvab000
    @osvab0004 жыл бұрын

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

  • @luv7365
    @luv7365 Жыл бұрын

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

  • @1nparad1sepwnz79

    @1nparad1sepwnz79

    Жыл бұрын

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

  • @user-ww5fe4on6y
    @user-ww5fe4on6y2 жыл бұрын

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

  • @user-bz4bo6ol2o
    @user-bz4bo6ol2o3 жыл бұрын

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

  • @vladislavbulanov625

    @vladislavbulanov625

    2 жыл бұрын

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

  • @1nparad1sepwnz79

    @1nparad1sepwnz79

    Жыл бұрын

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

  • @xumpocmb-404

    @xumpocmb-404

    11 ай бұрын

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

  • @user-ib9uw3he1y

    @user-ib9uw3he1y

    10 ай бұрын

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

  • @Nina-hy4ql

    @Nina-hy4ql

    5 ай бұрын

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

  • @k1ntoho
    @k1ntoho4 жыл бұрын

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

  • @user-bj9hd1bc4j
    @user-bj9hd1bc4j Жыл бұрын

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

  • @AnnaIsHere
    @AnnaIsHere2 жыл бұрын

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

  • @crazyvalyochek516

    @crazyvalyochek516

    Жыл бұрын

    **

  • @user-xl6gp9em1b

    @user-xl6gp9em1b

    9 ай бұрын

    Не переигрывай пельмень

  • @user-ee1lx1pe7n
    @user-ee1lx1pe7n3 жыл бұрын

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

  • @orazovdidar
    @orazovdidar3 ай бұрын

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

  • @user-rw2ig6nb5l
    @user-rw2ig6nb5l3 жыл бұрын

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

  • @martincatus
    @martincatus Жыл бұрын

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

  • @user-tx3mt1zi2d

    @user-tx3mt1zi2d

    Ай бұрын

    ты как прям школьники в американском фильме

  • @user-wk9dl9lu2t
    @user-wk9dl9lu2t2 жыл бұрын

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

  • @aace6333

    @aace6333

    2 ай бұрын

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

  • @user-wk9dl9lu2t
    @user-wk9dl9lu2t2 жыл бұрын

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

  • @Toksi86
    @Toksi863 жыл бұрын

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

  • @user-to9qz4ks4j
    @user-to9qz4ks4j Жыл бұрын

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

  • @laikaboss9047
    @laikaboss90474 жыл бұрын

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

  • @shipovalovv
    @shipovalovv8 ай бұрын

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

  • @ES-ng3el
    @ES-ng3el8 ай бұрын

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

  • @Taridonov
    @Taridonov4 жыл бұрын

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

  • @alibekjusupov9577
    @alibekjusupov95773 жыл бұрын

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

  • @user-bq7hh5gr5f
    @user-bq7hh5gr5f Жыл бұрын

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

  • @kolobroadgh8532
    @kolobroadgh85322 жыл бұрын

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

  • @galinaoliver5624
    @galinaoliver5624 Жыл бұрын

    Круууто!

  • @autostyle8170
    @autostyle8170 Жыл бұрын

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

  • @Ruslan501
    @Ruslan5012 жыл бұрын

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

  • @orthodox_channel
    @orthodox_channel Жыл бұрын

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

  • @user-ck3bl1hy2c
    @user-ck3bl1hy2c Жыл бұрын

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

  • @victoriacare6156
    @victoriacare61564 жыл бұрын

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

  • @user-hn7gb9ej9d
    @user-hn7gb9ej9d4 жыл бұрын

    Спасибо!

  • @magiclake9454
    @magiclake94543 жыл бұрын

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

  • @Lottivozlar_community
    @Lottivozlar_community Жыл бұрын

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

  • @VladimirGavr
    @VladimirGavr2 жыл бұрын

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

  • @maskanews
    @maskanews4 жыл бұрын

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

  • @user-fw7dn9ib1j

    @user-fw7dn9ib1j

    3 жыл бұрын

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

  • @kadencode5347

    @kadencode5347

    2 жыл бұрын

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

  • @user-xr2cz1ky6s
    @user-xr2cz1ky6s Жыл бұрын

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

  • @velomatica
    @velomatica4 жыл бұрын

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

  • @RomanZverev-yc5qc

    @RomanZverev-yc5qc

    3 жыл бұрын

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

  • @schmoopiegrob8758

    @schmoopiegrob8758

    2 жыл бұрын

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

  • @velomatica

    @velomatica

    2 жыл бұрын

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

  • @user-nu6jv9qp7c
    @user-nu6jv9qp7c Жыл бұрын

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

  • @user-ww5fe4on6y
    @user-ww5fe4on6y2 жыл бұрын

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

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil2 жыл бұрын

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

  • @nicasmirnovaa
    @nicasmirnovaa Жыл бұрын

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

  • @ankhmarcius8331
    @ankhmarcius83314 жыл бұрын

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

  • @Dm-if3vl
    @Dm-if3vl3 жыл бұрын

    Спасибо

  • @TheReasterTR3
    @TheReasterTR34 жыл бұрын

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

  • @duck0154
    @duck01543 жыл бұрын

    *ТоП* !

  • @user-hi1bw5gb3r
    @user-hi1bw5gb3r2 жыл бұрын

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

  • @LimarDeWills
    @LimarDeWills4 жыл бұрын

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

  • @alexeysirota1865
    @alexeysirota18653 жыл бұрын

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

  • @ozen950

    @ozen950

    2 жыл бұрын

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

  • @user-ke4ss2bg9k
    @user-ke4ss2bg9k4 жыл бұрын

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

  • @ameno095
    @ameno0954 жыл бұрын

    Super. Spasibo ogromnoe!

  • @m1x412
    @m1x4123 жыл бұрын

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

  • @user-ih9wz3vh7y
    @user-ih9wz3vh7y2 жыл бұрын

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

  • @brutsmart
    @brutsmart Жыл бұрын

    топчик

  • @user-cv3sc6qi2e
    @user-cv3sc6qi2e4 жыл бұрын

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

  • @ruman3726

    @ruman3726

    3 жыл бұрын

    нет

  • @user-ss3kn9sc8m
    @user-ss3kn9sc8m Жыл бұрын

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

  • @ildarEGE
    @ildarEGE2 жыл бұрын

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

  • @user-bn4kd5iw8n
    @user-bn4kd5iw8n5 ай бұрын

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

  • @apocalypsesoon4828
    @apocalypsesoon4828 Жыл бұрын

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

  • @bambimbambas
    @bambimbambas3 жыл бұрын

    Я до сих пор не понимаю больше половины материала, но понял, хоть что-то, когда поигрался с кодом тут: 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

    3 жыл бұрын

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

  • @goalkeeperpro6516
    @goalkeeperpro65164 жыл бұрын

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

  • @kandreyk9159

    @kandreyk9159

    4 жыл бұрын

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

  • @vladimirkuchin1677

    @vladimirkuchin1677

    Жыл бұрын

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

  • @Strongflight
    @Strongflight2 жыл бұрын

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

  • @poliklopik6774

    @poliklopik6774

    2 жыл бұрын

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

  • @user-fu8vp1he5z
    @user-fu8vp1he5z2 жыл бұрын

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

  • @user-rn3nr4tc7b
    @user-rn3nr4tc7b2 жыл бұрын

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

  • @user-zt1zh1bp2d
    @user-zt1zh1bp2d2 жыл бұрын

    Привет. Мне нужно разработать декоратор 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 Жыл бұрын

    👍

  • @konstantinvyacheslavovich8217
    @konstantinvyacheslavovich82177 ай бұрын

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

  • @_Kruzo_
    @_Kruzo_9 ай бұрын

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

  • @murshig5370
    @murshig53703 жыл бұрын

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

  • @Tolya421.
    @Tolya421.3 жыл бұрын

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

  • @rahmatj0n
    @rahmatj0n4 жыл бұрын

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

  • @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 С чего начать

  • @victoriacare6156
    @victoriacare61564 жыл бұрын

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

  • @user-ke8gc3he6f
    @user-ke8gc3he6f3 жыл бұрын

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

  • @user-rl4om3nr5k
    @user-rl4om3nr5k2 жыл бұрын

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

  • @python3815
    @python38154 жыл бұрын

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

  • @egoroffchannel

    @egoroffchannel

    4 жыл бұрын

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

  • @user-np6pe4uh1t

    @user-np6pe4uh1t

    4 жыл бұрын

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

  • @user-xm5lz6tb7h
    @user-xm5lz6tb7h2 жыл бұрын

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

  • @vahadg
    @vahadg2 жыл бұрын

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

  • @user-wk9dl9lu2t

    @user-wk9dl9lu2t

    2 жыл бұрын

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

  • @user-wk9dl9lu2t

    @user-wk9dl9lu2t

    2 жыл бұрын

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

  • @capitulation27

    @capitulation27

    Жыл бұрын

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

  • @user-wk9dl9lu2t

    @user-wk9dl9lu2t

    Жыл бұрын

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

  • @capitulation27

    @capitulation27

    Жыл бұрын

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

  • @SemyonMazepin
    @SemyonMazepin11 ай бұрын

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

  • @user-bt2kt2cg7f
    @user-bt2kt2cg7f4 жыл бұрын

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

  • @egoroffchannel

    @egoroffchannel

    4 жыл бұрын

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

  • @user-vr8fc7by2s
    @user-vr8fc7by2s3 жыл бұрын

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

  • @egoroffchannel

    @egoroffchannel

    3 жыл бұрын

    kzread.info/dash/bejne/hqNms5mbgtjIeNo.html вот здесь говорится, что такое ВЫЗОВ объекта

  • @user-cs9wt9ob8o
    @user-cs9wt9ob8o7 ай бұрын

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

  • @ne_psixyu
    @ne_psixyu Жыл бұрын

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

  • @AXGroser

    @AXGroser

    Жыл бұрын

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

  • @gpankov
    @gpankov2 жыл бұрын

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

  • @serbon3905

    @serbon3905

    Жыл бұрын

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

  • @podvodnikk4562
    @podvodnikk45624 жыл бұрын

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

  • @JuLia-mr7rn
    @JuLia-mr7rn Жыл бұрын

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

  • @MP-pc9bo
    @MP-pc9bo3 жыл бұрын

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

  • @Unknown-ws6im
    @Unknown-ws6im6 ай бұрын

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

  • @Shked102
    @Shked1023 жыл бұрын

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

  • @chrisrogers3795
    @chrisrogers3795 Жыл бұрын

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

  • @user-gv8ee4fp8q
    @user-gv8ee4fp8q3 жыл бұрын

    Подскажите, пожалуйста, в чем может быть проблема? В последней строчке выводится результат, но в конце еще выводится 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

    2 жыл бұрын

    @@egoroffchannel true or false?

  • @gorin1337

    @gorin1337

    Жыл бұрын

    @@reqam7969 None

  • @aleksandrfareast
    @aleksandrfareast4 жыл бұрын

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

  • @azar4ik1

    @azar4ik1

    4 жыл бұрын

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

  • @forez7745

    @forez7745

    3 жыл бұрын

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

  • @ded6911
    @ded69113 жыл бұрын

    Купи мир

  • @user-fw7dn9ib1j
    @user-fw7dn9ib1j3 жыл бұрын

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

  • @nikolaydd6219
    @nikolaydd62194 жыл бұрын

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

  • @andrexxelles
    @andrexxelles3 жыл бұрын

    А

  • @elkins87
    @elkins872 жыл бұрын

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

  • @DoktorZlo96
    @DoktorZlo964 жыл бұрын

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

  • @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
    @jarefmozz99882 жыл бұрын

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

  • @user-xo6ui5el2l
    @user-xo6ui5el2l2 жыл бұрын

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

  • @Das.Kleine.Krokodil

    @Das.Kleine.Krokodil

    2 жыл бұрын

    где одинаковые они?

  • @user-gf6er4ug6g
    @user-gf6er4ug6g2 жыл бұрын

    Ну почему все "учителя" объясняют все исключительно через пень колоду? Декоратор 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 жыл бұрын

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

  • @user-gf6er4ug6g

    @user-gf6er4ug6g

    2 жыл бұрын

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

  • @Das.Kleine.Krokodil

    @Das.Kleine.Krokodil

    2 жыл бұрын

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

  • @user-gf6er4ug6g

    @user-gf6er4ug6g

    2 жыл бұрын

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

  • @user-gf6er4ug6g

    @user-gf6er4ug6g

    2 жыл бұрын

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

  • @immb4908
    @immb49082 жыл бұрын

    Похоже, Вы абсолютно не понимате, что такое "замыкание", если называете декоратор "замыканием".

Келесі