Уроки Python casts #8 - Замыкания

  Рет қаралды 47,345

Oleg Molchanov

Oleg Molchanov

Күн бұрын

Мои курсы:
Boosty:
boosty.to/omol...
Patreon:
/ karty-vsekh-41011404
О том, что такое замыкания (closures) в Python. Начинаем с переменных и объектов, потом затрагиваем чуть-чуть области видимости (scope) и время жизни переменных, а затем сталкиваемся лоб в лоб с замыканиями.
Условия, при которых в Python возможны замыкания:
1. Должны присутствовать вложенные функции. Одна "родительская" и как минимум одна "дочерняя".
2. Внутренняя (дочерняя или вложенная) функция должна ссылаться на некое значение, переменную, находящееся в родительской области видимости (enclosing scope).
При этом внутренняя функция не получает эту переменную в качестве аргумента.
3. Родительская функция возвращает в качестве результат объект внутренней функции.
Продолжение серии уроков по языку Python для начинающих. Серия посвящена отдельным темам по программированию на Python.
** ИСХОДНЫЙ КОД **
Основных проектов доступен в Patreon:
/ iskhodnyi-kod-26640469
***
------
🔷 Для донатов. Всегда очень признателен за это:
www.donational...
------
★ Важно:
Как читать Traceback Python:
• Как читать Traceback P...
Работа с ошибками на примере двух нерабочих парсеров:
• Python: работа с ошибк...
★ Все серии Python casts:
1 - Что вам нужно знать о Pip
• Уроки Python Casts # 1...
2 - Переменные окружения. Использование.
• Уроки Python casts # 2...
3 - Что означает *args, **kwargs
• Уроки Python casts # 3...
#4 - if __name __ == '__main__': что это значит
• Уроки Python casts #4 ...
#5 - Генераторы списков (List comprehension)
• Уроки Python casts #5 ...
#6 - Декораторы
• Уроки Python casts #6 ...
#7 - 5 приемов, о которых вы могли не знать
• Уроки Python casts #7 ...
#8 - Замыкания
• Уроки Python casts #8 ...
#9 - Что такое try... except...
• Уроки Python casts #9 ...
#10 - Что такое yield
• Уроки Python casts #10...
#11 - Как работает функция map()
• Уроки Python casts #11...
#12 - Как работает функция filter()
• Уроки Python casts #12...
#13 - Else у циклов For и While
• Уроки Python casts #13...
★ Плейлисты:
Django 2.x:
• Уроки Django 2.x
Flask:
• Создание блога на Flas...
Боты для Телеграма:
• Telegram боты на Python
Работа с API Вконтакте:
• Работа с API Вконтакте...

Пікірлер: 76
@nurs40
@nurs40 4 жыл бұрын
"Замыкание - это аналог класса в ООП." И тут у меня просветление в голове)))
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 3 жыл бұрын
только зачем такой аналог, если есть ооп
@evgenyzorin941
@evgenyzorin941 4 жыл бұрын
Преподаватель от бога! Подача материала на высшем уровне! Безумно рад, что нашел твой канал!
@dervater5635
@dervater5635 2 жыл бұрын
Декорирование + Замыкание. Лучший контент, который я видел. Спасибо
@TheHospicer
@TheHospicer 2 жыл бұрын
Спасибо. Для полного счастья не хватило какого-нибудь практического примера применения.
@andyanderson222
@andyanderson222 3 жыл бұрын
Вы просто шикарно объясняете! Невероятно точно и ёмко. Спасибо!
@vladsaichenko1946
@vladsaichenko1946 4 жыл бұрын
Ахаха, чем больше смотрю ваш канал, тем больше понимаю что в этом мире не все так просто
@aidartimerbayev9600
@aidartimerbayev9600 3 жыл бұрын
Спасибо! Достаточное полноценное описание замыкания в Python.
@AntonDmitriyev
@AntonDmitriyev 3 жыл бұрын
Один 10-минутный ролик объяснил замыкания быстрее и понятнее, чем 5 статей и двухчасовая лекция. Ёлки-палки, Олег, Вы нужны миру))
@ANNA-nt4pd
@ANNA-nt4pd 5 жыл бұрын
Блин, Олег, это было волшебно, спасибо Вам большое!
@uniqqquniqqq2053
@uniqqquniqqq2053 2 жыл бұрын
Большое спасибо за ваши видео, день прошел не зря!
@1GvOG
@1GvOG 3 жыл бұрын
Информативно очень спасибо
@nooruzbai
@nooruzbai Жыл бұрын
2 дня думал что декоратор эт аналог класса, спасибо что подтвердили. Спасибо))))
@zaemiel
@zaemiel Жыл бұрын
я не сказал, что декораторы - это аналог класса. Я сказал, что замыкания напоминают классы.
@leomysky
@leomysky 3 жыл бұрын
Как же всё круто, спасибо!
@alexandernakonechny4382
@alexandernakonechny4382 3 жыл бұрын
Спасибо, Олег, Вы ПРОФИ.
@tihon4979
@tihon4979 4 жыл бұрын
Видос - БОМБА!!! очень понятно и полезно знать такое.
@НиколайТуршиев
@НиколайТуршиев 6 жыл бұрын
Лучшее что нашел, спасибо!
@zaemiel
@zaemiel 6 жыл бұрын
Спасибо
@velomatica
@velomatica 2 жыл бұрын
Топ урок! Спасибо Олег =)
@Jyrgalovv
@Jyrgalovv 3 жыл бұрын
Спасибо, все понятно😊
@fricon484
@fricon484 3 жыл бұрын
Спс лайк поставить не забыл как, хорошо обЪяснил
@BagautdinovR
@BagautdinovR 2 жыл бұрын
Спасибо!
@ardanow1
@ardanow1 6 жыл бұрын
Полезно, спасибо
@ChikivaraTV
@ChikivaraTV 4 жыл бұрын
Спасибо большое! Олег, пожалуйста расскажите про ООП в python
@oldmanbpv84
@oldmanbpv84 3 жыл бұрын
Спасибо! Интересно
@lestar0394
@lestar0394 4 жыл бұрын
Товарищ Д.Бизли в книге "Подробный справочник" говорит, что замыкания работают быстрей, чем классы. Возможно это еще одно применение, помимо декораторов
@serg888fert4
@serg888fert4 3 жыл бұрын
Не плохо бы экран увеличить ((
@АлексейНехаев-б4м
@АлексейНехаев-б4м 4 жыл бұрын
Олег вот (Continuation passing style in Python) еще область в которой успешно используется идея замыкания. Если у вас будет время, разберите пожалуйста этот момент.
@alexrwwwe11
@alexrwwwe11 3 жыл бұрын
Даже я понял
@simurgh314
@simurgh314 2 жыл бұрын
Кстати, как в интертпретаторе в терминале писать многострочные операторы, функции итп. ? Нажимая ентер выполняется стейтмент текущей строки, шифт+ентер тоже не переносит каретку.... Не нагуглилось и в учебнике не нашел
@АртурХасиев-ж8с
@АртурХасиев-ж8с 2 жыл бұрын
на 5:04 в глобальной области? или enclosing? или я что-то путаю?
@Canisgrey
@Canisgrey 6 жыл бұрын
Добрый вечер, Олег! А можно про self от вас услышать?
@zaemiel
@zaemiel 6 жыл бұрын
про self пойдет речь, когда заговорим про ООП. Скажу пока, что self - это ссылка на экземпляр класса, о котором в каждом конкретном случае идет речь.
@НиколайТуршиев
@НиколайТуршиев 6 жыл бұрын
Очень круто
@zaemiel
@zaemiel 6 жыл бұрын
Спасибо большое
@ibrahimoglu
@ibrahimoglu 3 жыл бұрын
👍
@TheCximus
@TheCximus 5 жыл бұрын
я так понимаю, что через замыкание можно будет сотворить обработчики нажатий клавиш. Мы принимаешь ссылку на клавишу и замыкаем ее.
@Vitaliy-ct2wv
@Vitaliy-ct2wv 4 жыл бұрын
а где кнопка "СПОНСИРОВАТЬ" ?! =)
@Nodorgrom
@Nodorgrom 5 жыл бұрын
4:57 ...и вот здесь начинается самое интересное... хренак и реклама, молодец Олежек, молодец))
@mistrebrown7642
@mistrebrown7642 5 жыл бұрын
Ты вообще о чём?
@x-neimi4493
@x-neimi4493 4 жыл бұрын
Какой неблагодарный человек вздумал ставить дизлайк?
@avazart614
@avazart614 4 жыл бұрын
Автор путает область видимости и время жизни.
@JohnEskimSmith
@JohnEskimSmith 6 жыл бұрын
Спасибо. Очень полезно!
@magneat
@magneat 4 жыл бұрын
офигеть, 1000 лайков и 3 дизлайка. это 300 к 1! самый высокий рейт который я видел на ютубе до сих пор
@vASTification
@vASTification 6 жыл бұрын
Очень полезно, спасибо.
@rugineer
@rugineer 6 жыл бұрын
Мне кажется, что многим будет интересен вопрос, чем отличается поведение интерпретатора, если мы во внутренней функции `inner` присвоим новое значение переменной `x = [...]` или если мы вызовем какой либо метод этой переменной `x.append(...)` или `x.clear()`
@csgoreplay1608
@csgoreplay1608 2 жыл бұрын
Посмотрел 3 видео - ничего не понял, посмотрел Вас - и понял все намного лучше) плюс узнал много фишек с областями видимости и ссылками на обьект
@PastFrom
@PastFrom 6 жыл бұрын
Здравствуйте, Олег. Стоит ли ожидать в дальнейших видеороликах разбор работы модуля, пришедшего в версии 3.7 под названием dataclasses?
@kde416
@kde416 6 жыл бұрын
было бы интересно посмотреть такое видео
@ЕвгенийКарандасов-е7щ
@ЕвгенийКарандасов-е7щ 6 жыл бұрын
Про замыкания могу сказать одно - в душе не представляю, где они могут пригодиться в python. Неочевидное поведение, которое только может усложнить жизнь. Понимаю, что можнл привести хорошие примеры, но мне кажется, что про замыкания просто нужно знать, а вот использовать их необходимости нет. Это не javascript. Олег, огромное спасибо за стиль преподнесения информации и спокойный немонотонный голос. Ставлю лайк
@zaemiel
@zaemiel 6 жыл бұрын
Спасибо. Вы абсолютно правы - знать что это нужно, но область применения совершенно не очевидно. Это может быть полезно в том случае, если нужно писать код в функциональном стиле. Поэтому никакие кейсы я не приводил - т.к. все упирается в функциональщину.
@eugenenazirov
@eugenenazirov 2 жыл бұрын
Обалденно понятно. Просто супер.
@МартовСергей-й3я
@МартовСергей-й3я Жыл бұрын
Черт побери, как же понятно назначение.
@nadyamoscow2461
@nadyamoscow2461 3 жыл бұрын
Большое спасибо - очень понятное и емкое объяснение. Каналу удачи и процветания
@rayrayray4653
@rayrayray4653 8 ай бұрын
просто оргазм!!!
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 3 жыл бұрын
Спасибо, отлично
@oleg6791
@oleg6791 3 жыл бұрын
к сожалению плохо объяснил, после двух просмотров абсолютно не понял, как осуществлен доступ к списку, если он находится только в поле видимости функции
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 3 жыл бұрын
ну язык позволяет пролезть область видимости значит нельзя ясно обратиться к переменной по имени просто x нельзя получить если он не в области видимости
@ДокторМоро-е8в
@ДокторМоро-е8в 5 жыл бұрын
Вообще очень много информации для 11 минут! Шикарно и спасибо)
@alexanderpadalka5708
@alexanderpadalka5708 3 жыл бұрын
@mooderatorpro
@mooderatorpro 6 жыл бұрын
Спасибо, полезно
@duality9919
@duality9919 Жыл бұрын
полвидео непонятно о чем
@zaemiel
@zaemiel Жыл бұрын
ок, вы не поняли о чем видео. Бывает.
@9keepa
@9keepa 5 жыл бұрын
концовка просто супер..самое главное вы указали для это делается и сравнили с классом..Мне теперь понятно что такое замыкание!
@paulshishkin6593
@paulshishkin6593 4 жыл бұрын
Все отлично, подробно и понятно. НО вот голос монотонный и удерживать внимание сложно. Честно говоря начинаю засыпать. Попробуйте немного оживить речь интонациями - усваиваемость материала станет гораздо лучше.
@igormakar2259
@igormakar2259 6 жыл бұрын
Было бы нереально круто, увидеть видос на тему websocket на примере парсинга криптобиржи binance.
@2LazySnake
@2LazySnake 3 жыл бұрын
Спасибо вам, Олег, за вашу работу! Лайк поставил, на канал подписался, комментарий, вот, написал. Такого контента должно быть гораздо больше на KZbin.
@GreekkAlex
@GreekkAlex 5 жыл бұрын
Олежка, только продолжай, будем донатить по возможности(имею в виду сумму)!!!!
@zubescu
@zubescu 2 жыл бұрын
Олег, давно тебя смотрю, и всегда твои объяснения очень толковые и понятные. даже не таких не простых темах. спасибо.
@TeppopucT
@TeppopucT 5 жыл бұрын
Вау!!!
@АндрейИсаков-л5щ
@АндрейИсаков-л5щ 6 жыл бұрын
Если что, inner() можно лямбдой заменить:) return lambda : [print(x), print(id(x))]
@zaemiel
@zaemiel 6 жыл бұрын
У меня задачи другие. Мне важно показать что-то так, чтобы это было наглядно. Показать так, чтобы одного взгляда было достаточно, чтобы понять, что этот код делает. А к восприятию лямбд нужна определенная привычка. Поэтому лямбды - это последняя вещь, которую я буду использовать в моих кастах.
@GreekkAlex
@GreekkAlex 5 жыл бұрын
@@zaemiel рубанул так, что хрен поспоришь!!!))))
Уроки Python casts #9 - Что такое try - except
10:37
Oleg Molchanov
Рет қаралды 34 М.
Уроки Python casts #10 - Что такое yield
9:42
Oleg Molchanov
Рет қаралды 70 М.
Самое неинтересное видео
00:32
Miracle
Рет қаралды 2,9 МЛН
Bike Vs Tricycle Fast Challenge
00:43
Russo
Рет қаралды 98 МЛН
Стойкость Фёдора поразила всех!
00:58
МИНУС БАЛЛ
Рет қаралды 2,9 МЛН
An Unknown Ending💪
00:49
ISSEI / いっせい
Рет қаралды 55 МЛН
Замыкания (Closures) в Python
30:54
Python Russian
Рет қаралды 15 М.
Уроки Python casts # 3 - Что означает *args, **kwargs
12:13
Уроки Python casts #6 - Декораторы
19:50
Oleg Molchanov
Рет қаралды 142 М.
Ядерка-как это будет.
25:55
Илья Свиридов
Рет қаралды 185 М.
Python с нуля. Урок 18 | Вложенные функции, замыкания
19:56
Самое неинтересное видео
00:32
Miracle
Рет қаралды 2,9 МЛН