Тёмный

Замыкания в Python. Closure Python 

egoroff_channel
Подписаться 140 тыс.
Просмотров 77 тыс.
50% 1

🔥🔥🔥 Инди-курс по Python 🔥🔥🔥
stepik.org/cou...
👉👉👉 Свой вопрос по курсу можешь задать в чате
t.me/+SlnNhAO7...
👉👉👉 Также подписывайся на мой телеграмм-канал
t.me/python_eg...
Подробнее об урок
egoroffartem.py...
Функции (def). Определение и вызов функции
• 35 Функции (def) в Pyt...
Область видимости: локальная, глобальная и встроенная.
• 38 Область видимости. ...
stepik.org/cou...
Курс на степике
В данном уроке поговорим о том, что такое замыкания (closures)
Для создания замыкания нам понадобиться создать вложенную функцию, которая будет использовать переменную, объявленную за ее пределами
Все видео этого курса можете найти на сайте
egoroffartem.py...
или в Вк
videos-...
Если кому нужна помощь, предлагаю индивидуальные занятия. Подробнее пишите в личку в вк
artem_e...
python....
В данном группе можете найти информацию о новых видео и задать вопросы

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

 

1 окт 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 119   
@egoroffchannel
@egoroffchannel 4 месяца назад
🫵 Теория без практики - ничто, поэтому 👇 🐍 stepik.org/course/63085/promo 👉 специально для тебя создал бесплатный топовый курс по Python 👉 В нем тебя ждет: 📗 более 400 практических заданий на программирование 📗 более 250 тестовых заданий на проверку материала 📗 десятки часов видеоматерилов по теории 📗 видеоразборы решения заданий 📗 текстовые материалы по урокам, примеры кода 📗 доступ к закрытому чату с дружественной обстановкой 📗 сертификат в случае успешного прохождения курса
@egorkomarov4719
@egorkomarov4719 4 года назад
четко в нужное время! Как раз разобрал замыкание в js =) Благодарю ❤️
@НиколайМануилов-и1д
Я просмотрел видео очень тщательно, повторяя все действия и теперь кажется я начинаю понимать как это можно применять, но до сих пор не особо понимаю почему это работает))) Простите меня за флуд) это всё эмоции)
@MultiPalaz
@MultiPalaz 4 года назад
Самые лучшие уроки, которые я встречал на RU-vid. Максимально понятно.
@utyara3
@utyara3 3 года назад
Как вы рисуете на экране? Тоже так хочу:D
@Roiser101
@Roiser101 4 года назад
Интуитивно чувствую, что замыкания довольно полезны, но что-то не очевидно, где это можно применить Оо Особенно, при наличии классов.
@osvab000
@osvab000 4 года назад
Посмотри Молчанова по этому поводу - он подробно рассказывает аналогию замыкания с ООП.
@crypto_oil
@crypto_oil Год назад
а может ли использование замыканий привести к жору памяти? тут ведь после использования функции сборщик мусора ничего не собирает...
@PianoSurRia
@PianoSurRia 3 года назад
На нон локале мозг поломался ...
@ИльяУваров-у2в
@ИльяУваров-у2в Год назад
Я вот что не понимаю, почему main_func работает только тогда, когда ее помещают в переменную (в примере r = main_func('Misha')) и потом вызывают эту переменную как функцию r()? При чем работает эта функция только через консоль! Почему так?
@ДенисМедведев-о7д
@ДенисМедведев-о7д 8 месяцев назад
Потому что она что-возвращает. Надо куда-то возврат записать. Работает она не только через консоль. Просто автор почему-то ее через консоль вызывает, хотя можно было бы и через саму IDE.
@ДенисСтаханов-ж5р
Люди добрый, я понял как они работают, но я пока не пойму где это можно применить, кто-нибудь может объяснить пожалуйста?
@m_i_r_k
@m_i_r_k Год назад
В декораторах, например
@andreyorlov6952
@andreyorlov6952 2 года назад
Урок изложен очень тяжело, предыдущие уроки изложены очень хорошо
@badsurvival7309
@badsurvival7309 Год назад
Дело не в уроке, а в теме, Пайтон схватываю на лету, но вот замыкание и декораторы пытаюсь понять уже по 3 видеоуроку
@IGORVBORODIN
@IGORVBORODIN 4 года назад
Как всегда на высоком уровне качества. Спасибо
@inconstancy
@inconstancy 4 года назад
одно не совсем понятно... мы знаем, что после выполнения любой функции её локальные переменные уничтожаются, тогда возникает резонный вопрос: каким образом и где именно сохраняются переменные при использовании замыканий? в данном случае сохраняется переменная самой вложенной функции, или же сохраняется переменная материнской функции, на которую ссылается дочерняя (вложенная) функция? вот этот момент не совсем понятен
@АлександрХолодов-л3н
Так ка в Python всё есть объект, то функция есть экземпляр класса и, следовательно, у него есть атрибуты. Если более конкретно, то в примере с def counter():... значение переменной count хранится внутри специального cell объекта и доступна как c.___closure__[0].cell_contents, где c - ссылка на внешнюю функцию counter, __closure___ - специальный атрибут, который есть экземпляр кортежа из которого по индексу 0 выбираем ячейку с атрибутом count и по атрибуту cell_content доступно его текущее значение.
@АртурХасиев-ж8с
@АртурХасиев-ж8с 2 года назад
в примере с счетчиком, я правильно понял, что о сохранении значения говорит тот факт, что при запуске, например count()() счетчик будет всегда на значении "1"?
@alekseikozhevnikov8957
@alekseikozhevnikov8957 4 года назад
Впервые я не понял среди видео Артема. 1. Почему мы в конце функции вызываем внутреннюю? Разве внутренняя без этого не будет исполняться автоматически? 2. Почему мы ее без параметров в скобках вызываем? Возможно я и сам разберусь, но если кто-то ответит, то буду признателен!
@ВладиславЕгоров-п4ю
внутренняя функция не будет выполняться автоматически без явного ее вызова. через return func(не func()) функция не вызывается, а передается из "функции-обертки" в "переменную", после чего переменная "становится"(имя ссылается на) этой функцией. func() - вызов функции. () - "оператор" вызова, сообщает интерпретатору, что функция "вызывается", т.е. выполняются, описанные в ее теле инструкции. a = func() - в а "помещается" то, что возвращает(return) функция, либо None, когда функция не возвращает значений. func - "имя" функции, так же, как и "имя"(ссылка) на любой другой объект. а = func равносильно a = b(где b = 5, например), т.е. a начинает ссылаться на то же на что и func, в данном случае на функцию func и так же может быть вызвана через "оператор" (). т.е. а() равносильно func().
@Квантоваяопределенность
Очень понятные объяснения. Очень легко слушать и воспринимать.
@VenfogeL
@VenfogeL Месяц назад
А как вывести на экран эти функции вне консоли? Почему я когда нажимаю run, то ничего не происходит и пустая консоль?
@panda_na_hiltsi
@panda_na_hiltsi 3 года назад
спасибо за видео, очень доступно все описано. Но у меня возник вопрос : почему нужно использовать nonlocal для count. Выяснила в процессе, что это зависит от типа данных, для неизменяемых нужно использовать nonlocal, чтобы их изменить.
@egoroffchannel
@egoroffchannel 3 года назад
nonlocal нужна для указания области видимости из которой будешь брать переменную
@olitakic
@olitakic 2 года назад
@@egoroffchannel но почему в предыдущих примерах нам не требовалось указывать nonlocal? спасибо за крутые видео!
@agility3554
@agility3554 2 года назад
@@olitakic в предыдущих примерах мы получали значение, а не меняли его.
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov 2 года назад
Артём, благодарю! Потрясающе интересная тема! 🔥 Градус сложности повышается 🙂
@HRVRDTech
@HRVRDTech 4 года назад
Братан уважуха! Спасибо большое. Удачи тебе. (Узбекистан, г.Ташкент)
@MstrDuos
@MstrDuos 2 года назад
А для каких целей такие телодвижения понадобятся? И, как я понял, по сути, нет никакой разницы между классами и замыканием, разве что в читабельности. Верно?
@m_i_r_k
@m_i_r_k Год назад
В декораторах, например, очень важная вещь
@НиколайМануилов-и1д
да, еще ,можно уточнить - почему используется консоль в видео? Похоже после этого видео у меня больше вопросов чем ответов
@НиколайМануилов-и1д
уже сам понял, что исключительно для удобства)
@Юлия-ч9с6й
@Юлия-ч9с6й 2 года назад
Кажется я наконец-то поняла. Посмотрю на всякий случай ещё пару раз :)
@live_cs2
@live_cs2 Год назад
Спасибо огромное ,долго не мог понять как это работает , помог разобраться )))
@Larriva666
@Larriva666 Год назад
Класс! Прояснил некоторые моменты
@evgenyrudakov6963
@evgenyrudakov6963 4 года назад
Добрый день! Спасибо за уроки! А будут ли подобные видео по алгоритмам ?
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 3 года назад
Спасибо!
@gaunter_o_d1mm
@gaunter_o_d1mm 3 года назад
Артём, а ты только Питон хорошо знаешь? Или и Java тоже знаешь? А то книги по Java, как философские труды. Сложны для понимания и осмысления.
@ВалерияМалышева-ь1в
Понятное объяснение!) Спасибо большое за урок!
@andrewananenko797
@andrewananenko797 4 года назад
Абсолютно ничего не понятно
@ShoutingVase
@ShoutingVase Год назад
Спасибо за такие видео
@archibaldivanovich4103
@archibaldivanovich4103 3 года назад
Спасибо огромное!!!
@dauren10
@dauren10 3 года назад
А почему main_func() нужно обязательно записывать в переменную, а потом эту переменную вызывать?Почему нельзя сразу main_func()?
@oleg6791
@oleg6791 3 года назад
В переменную вы записываете уже вызванную функцию, то есть результат ее выполнения. А результат выполнения этой функции - это функция которая была вложена. То есть в переменную записывается вывернутая внешняя функция
@gopherDooshit1
@gopherDooshit1 2 года назад
нихуя не понял, но очень интересно
@Evgeniy270885
@Evgeniy270885 Год назад
Со второго раза дошло! Спасибо!
@akkh6971
@akkh6971 4 года назад
Очень доходчиво
@denisk730
@denisk730 2 года назад
СПАСИБО!
@zingmao
@zingmao 4 года назад
У тебя лучшие видео по Python. Ни одна книга так не объясняет как ты , респект . Разбери еще пожалуйста тему функций высшего порядка, как спонсор прошу)))
@egoroffchannel
@egoroffchannel 4 года назад
спасибо. Что именно ты хочешь услышать в этом видео?
@zingmao
@zingmao 4 года назад
@@egoroffchannel как они вообще работают, где применяются и пару примеров их использования)
@БлезПаскаль-э6р
@@zingmao помню, что такое видео было на канале Selfedu, если ещё нужно.
@ДмитрийКрашенинников-г7ш
@@БлезПаскаль-э6р Да, курс "Добрый, добрый Python" на stepik =)
@Rusia-16
@Rusia-16 Год назад
Ни хера не понятно ! Зачем сохранять функцию в переменную и писать ее без скобок , если и так все работает без этого треша и все значения показываются во всех областях без проблем.
@johnyelasto
@johnyelasto Год назад
На этом примере да, а если у тебя будет модуль с классами, то переменная будет не в зоне видимости, такие вот дела, маслята 🫣
@ECHO-bw4ce
@ECHO-bw4ce 7 месяцев назад
Что такое классы?
@Mralex22801
@Mralex22801 4 года назад
Спасибо, то что нужно, через class такое делал.
@alibekjusupov9577
@alibekjusupov9577 3 года назад
Спасибо за видео!
@VeihShizoo
@VeihShizoo 3 месяца назад
Сложное
@vsevolod9987
@vsevolod9987 Год назад
А почему в плейлисте этот урок аж тут,но в товем курсе он 43
@codelearner2986
@codelearner2986 Год назад
Ава имба
@ЕвгенийПоловинский-в6у
Артем, очередное огромное спасибо за интересный урок. Если можно, подскажи, в каком видео можно посмотреть про экземпляры классов?
@egoroffchannel
@egoroffchannel 4 года назад
в плейлисте про ООП
@ЕвгенийПоловинский-в6у
@@egoroffchannel Спасибо
@vovergg
@vovergg 4 года назад
Ни разу не приходилось пользоваться замыканиями в Python ( я даже о них не знал, пока не столкнулся с javascript :))). Но теперь понятно, напоминает декораторы.
@egoroffchannel
@egoroffchannel 4 года назад
да, декораторы так раз будут следующие)
@andriiew325
@andriiew325 4 года назад
Corey Schafer , egoroff_channel 1love)))
@evariste6943
@evariste6943 2 года назад
иными словами можно создать параметрическую ф-ию F(a, x) , где а - это параметр, который можно задать заранее. и так же забавно что F может изменять изначально заданный параметр.
@user-tz4sd5ky8w
@user-tz4sd5ky8w Год назад
Первое видео из этой серии, в котором я ничего не понял с первого просмотра. Попробую пересмотреть...
@m_i_r_k
@m_i_r_k Год назад
Здравствуйте. Ну как успехи, спустя два месяца?)
@johnyelasto
@johnyelasto Год назад
​@@m_i_r_kон уже ceo гугла
@VeihShizoo
@VeihShizoo 3 месяца назад
Шатал чисто
@МарияДуванова-э1т
@МарияДуванова-э1т 3 года назад
Замыкание - это когда вложенная функция может пользоваться переменными, которые объявлены снаружи этой функции.
@bistronousogust
@bistronousogust 2 года назад
Отлично. Первая часть замыканий усвоена. Перехожу ко второй. И спасибо.
@Webian
@Webian 2 года назад
Бред
@ivanstereotekkofficial5353
@ivanstereotekkofficial5353 3 года назад
Построение речи самое важное в подаче материала. Невероятно благодарен !
@НиколайМануилов-и1д
Ох как туго постигается, пробую повторять - то работает то не работает, ошибок не вижу, ну вот допустим сейчас- def main_func(): def inner_func(): print('hello my friend') return inner_func b=main_func() b - выводит не так же как на видео из-за разницы операционных систем?
@RomanZverev-yc5qc
@RomanZverev-yc5qc 3 года назад
всё же норм
@sainco3036
@sainco3036 4 года назад
Спасибо.
@НиколайМануилов-и1д
У меня такой вопрос - возврат функции без скобок такие как "return inner_func" возможно использовать помимо этого случая, в более простых задачах?
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 3 года назад
так ты передаешь саму функцию можно не только делать return inner_func, но и в любых местах использовать фунцию как переменную например: print(inner_func) func2(inner_func) итд
@QScientist
@QScientist 2 года назад
я когда увидел функцию внутри функции, то удивился. А зачем нужно определять функцию внутри? можно же определить вторую функцию, а потом просто вызвать из main функцию внутреннюю и сохранить в переменную. По крайней мере так в языке си работает.
@tenelokis
@tenelokis 2 года назад
Это подводка к декораторам
@qwertymegaforce9088
@qwertymegaforce9088 2 года назад
Хороший туториал
@sir6681
@sir6681 4 года назад
def main_func(): def inner_func(): print('inner func now') return inner_func() Если мы присваиваем переменной 'a' значение main_func(), то почему при вызове 'a' не запускается inner_func(): print('inner func now')?? a = main_func() type(a) дает результат Но ведь вы положили в переменную нашу функцию. Почему получается такой класс?
@egoroffchannel
@egoroffchannel 4 года назад
Обрати внимание, что ты возвращаешь! у тебя возвращается не сама функция, а вызов функции inner_func. Теперь посмотри какой результат вызова inner_func, точнее что она тебе вернет. Подсказка None
@MartinQumin
@MartinQumin 3 года назад
Сказал, что это очень похоже на то, как ведут себя экземпляры класса. Но я что то не видел до этого тут обучалок про классы. Они есть?
@maestro1387
@maestro1387 2 года назад
Да, есть. В плейлисте про ООП
@АлександрДонцов-з9ц
как же ты понятно объясняешь)
@dmitrystelmakhov848
@dmitrystelmakhov848 2 года назад
Спасибо) Очень доступно)
@super2125
@super2125 4 года назад
Спасибо большое за ваши уроки, вы очень хорошо объясняете, у вас самый понятный канал по программированию.
@НиколайМануилов-и1д
Еще один вопрос - на сколько я понял функция nonlocal как бы ставит переменную на ступень выше, а функция global делает переменную глобальной сразу, так?
@egoroffchannel
@egoroffchannel 3 года назад
nonlocal не ставит, а говорит не искать переменную здесь, а ищи ее выше
@НиколайМануилов-и1д
@@egoroffchannel не так выразился, а global говорит - ищи переменную в глобальном ?
@atomicfuture1865
@atomicfuture1865 3 года назад
@@НиколайМануилов-и1д Да
@kirillusenko
@kirillusenko 4 года назад
_Просмотры упали под ноль, почему?_ Из за видео для спонсоров?.. Подписчиков то _28 к_ . . .
@Mralex22801
@Mralex22801 4 года назад
Так всегда с обучением. Сначала интересно людям, потом надоедает.
@egoroffchannel
@egoroffchannel 4 года назад
просмотры никуда не подали, они держатся на том же уровне. Это образовательный канал, а не развлекательный
@АндрейБаскаков-ы5д
Добрый день, вопрос, почему при дублировании материала с видео, return не выполняет функцию без скобок, а со скобками выполняет, но в конце пишет None. def main_func(): name='Иван' def inner_func(): print("Имя", name) return inner_func a=main_func() print(a)
@arturam9768
@arturam9768 4 года назад
Не надо писать в принте, когда вызываешь функцию а(), оно само отработает и напишет принт(так как в самой функции inner есть принт), а когда заворачиваешь это в принт то оно срабатывает, а потом еще и возвращает то, что возвращает его return, но так как у иннер функа нету return-a, оно возвращает 0. А если пишешь без скобок в принте то он показывает что это за объеет и где он хранится
@arturam9768
@arturam9768 4 года назад
Тоесть если мы создадим переменную b, где b=a, то всякий раз при вызове b будет выполнятся то же самое, что и выполнял a, а если напишем b=a() то оно получит значение его return-a
@АндрейБаскаков-ы5д
@@arturam9768 Благодарю)
@inconstancy
@inconstancy 4 года назад
@@arturam9768 если отсутствует return, то по умолчанию будет return None, а не return 0, не вводите людей в заблуждение
@fron5455
@fron5455 4 года назад
Привет у меня есть вопрос по пайтону. Например я ввожу в программу число с плавающей точкой и мне надо отбросить n числа перед запятым как это можно сделать например 123456,7890 я хочу отбросить число 6 перед запятым чтобы осталось только 5 чисел , после запятой знаю как сделать но перед не знаю ? Может тупой вопрос но я учус . Вот само задание : Написать инструкцию вывода значений переменных a, b и c (типа float) с пятью цифрами в целой части и тремя - в дробной. Значения должны быть выведены в виде: a = значение b = значение c = значение.
@MrAbad202
@MrAbad202 4 года назад
round(12.2424263, 2) >>> 12.24
@СергійГорбачов-т5с
a = str(число) for i in rang(len(a)): if a[i] == ',' : a.pop(i-1) break a = float(a)
@vovergg
@vovergg 4 года назад
@@СергійГорбачов-т5с Так работать не будет, у строк нет метода pop.
@vovergg
@vovergg 4 года назад
С ходу на ум приходит такое решение: number = 123456.789 integer = str(int(number)) # Вычленяем целую часть числа, приводим её к строке integer = integer[:5] # Делаем срез из целой части числа от нулевого до пятого integer = float(integer) # Приводим строку с целой частью к типу float fraction = round(number % 1, 3) # Вычленяем дробную часть и указываем кол-во знаков после запятой result = integer + fraction # Складываем целую и дробную части (обе части имеют тип float) print(result) # Выводим результат в консоль
@aleksandrfareast
@aleksandrfareast 4 года назад
Гугли, всё есть в тырнете.
@Mr717273747
@Mr717273747 3 года назад
Артём, открой свободный доступ к Части 2 - Замыкания в Python. Не будь жмотом. Тебе мало, что ты с рекламы имеешь?! Я тут зубрю твои видео-уроки “... на жопе волосы рву ...” чтоб освоить новое интересное ремесло, а ты ещё подляны делаешь?! Думаешь легко понять, когда у тебя язык заплетается от усталости? Открой свободный доступ к Части 2. Замыкания в Python - не издевайся над приличными людьми! … Не пропадай, дружище! ... … Мы тебя ценим! …
@akmiable
@akmiable 4 года назад
Спасибо, отличная тема!!!
@БогданГармаев
@БогданГармаев 4 года назад
cool!!!
@YACommunity
@YACommunity Год назад
Опять сухие примеры замыканий.
Далее
ХОМЯК ВСЕХ КИНУЛ
10:23
Просмотров 635 тыс.
Airpod Through Glass Trick! 😱 #shorts
00:19
Просмотров 1,4 млн
Замыкания (Closures) в Python
30:54
Просмотров 15 тыс.