Уроки Python casts #10 - Что такое yield
HTML-код
- Опубликовано: 27 ноя 2024
- Мои курсы:
Boosty:
boosty.to/omol...
Patreon:
/ karty-vsekh-41011404
Что такое yield в Python. Смотрим на функции-генераторы. Для чего нужны функции-генераторы, чем они отличаются от обычных функций в Python. Чем они отличаются от списков. Когда использовать простые списки, а когда генераторы.
Продолжение серии уроков по языку 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 Вконтакте...
Редкий случай , чтобы захотелось оставить комментарий к видео на RUclips. Уважаемый автор канала, спасибо вам огромное, за то, что вы находите время и имеете желание заниматься такой просветительской работой. Понятные примеры доступным языком, решение реальных задач, минимум воды в повествовании. Рад, что нашел этот канал на просторах сети. Так совпало, что большинство уроков что выходят в последнее время как раз на самые актуальные для меня темы. Я очень надеюсь, что вы, Олег, найдете возможность и дальше радовать свою аудиторию столь полезным контентом. Будь то короткие заметки о полезных вещах или целые курсы на большие темы. Ещё раз СПАСИБО!
и от меня тоже : Спасибо, просто Спасибо... за весь труд)
Спасибо. Рад, что вам понравилось
присоединяюсь и подписываюсь под каждым словом! Спасибо!
ну как, стал прогером?
@@visp6883 а кто вам сказал что это была цель? Большинство видео которые я смотрел на этом канале нужны мне были для конкретной цели. Эти цели были достигнуты во многом благодаря труду автора канала. Профессия у меня совершенно другая, но помощь была неоценима. За что ему ещё раз благодарность.
А ваш сарказм совершенно неуместен.
Единственное видео где на нормальных примерах объясняется то, когда надо применять генераторы. Низкий Вам поклон, Олег, за ваши труды.
Автор хорош, простым языком за 10 минут объяснил то что не мог понять месяц.
Самое лучшее объяснения генераторов. Спасибо огромное
За объяснение где это предпочтительней - прям респект респект.
День назад смотрел видео другого автора и практически ничего не понял. Здесь же въехал с первого раза. Признателен Олегу. Наглядно и доходчиво.
Спасибо, особенно понравился стил изложения без дергания и скачки, как на некоторых популярных каналах. Приятно слушать, все понятно.
Отличное объяснение. Простое, понятное и наглядное. Спасибо!
Спасибо за понятное и лаконичное объяснение. Ваш труд делает жизни множества людей проще. Виртуально жму Вам руку.
Олежка молодец объясняешь как настоящий учитель а не препод. Когда на собеседовании меня спросили как изучал python, ответил по твоим урокам они там слюной изошлись все. Больше бы таких как ты мир бы стал лучше. Благодарю тебя ;) разживусь денежкой обязательно проданатчу тебя .....
Как работа?
Мужик ты просто бог объяснений!
Спасибо
Года полтора назад смотрел ничего не понял, а щас смотрю всё очень доступно объясняет
а вот я и до функций-генераторов дотянулся! Спасибо за отличную подачу материала!
Очень понятные объяснения!
огромнейшее спасибо за материал и подачу!! Понятно, конкретно, ясно и правильно. Низкий поклон, от всей души!
Спасибо
Спасибо. Я этот yield часто вижу в функциях которые дробят списки на n-блоки типа def chunks(lst, n):
for i in range(0, len(lst), n):
yield lst[i:i + n]
Спасибо, очень нужный пример использования вы привели
Реально, никто мне не объяснял так подробно + примеры, которые дают ясность когда, что и как. Благодарю)
спасибо большое за видео, всё очень понятно!
Спасибо, особенно за то, что объясняете где это может понадобиться.
Нереально крутой канал. Все четко и по делу, нет воды и прочей туфты. Спс за качественный контент!!!
Олег, как обычно: лаконично и доходчиво. Не понимаю дюжину - поставивших дизлайки.
В нейронках генераторы используются очень часто. Налету генерируют часть данных и подают на вход сети. Виде зачетное, спасибо!
Отличный ролик
Красава Олежа
Огромное спасибо!
Отлично объясняете Олег. Спасибо.
Спасибо! Дошёл таки до таких ньюансов. Отличное видео!
Харош мужик. Все понятно объяснил
Спасибо за лучшие пояснения по языку python!
Спасибо за ваши усилия!
Присоединяюсь ко всем положительным вышесказанным комментариям. Замечательные примеры и их объяснения. Вычеркнул из списка тем на изучения сразу три пункта - yield, next, generator. Разумеется надо бы поучится их составлять, но после разжеванного материала не составит никаких трудностей.
В комментариях так же нашел тему, которую интересно было бы послушать, так же оставлю вам оставшиеся в моем списке.
1. async/await
2. Расширенные генераторы
3. threading
4. callback
5. contextvars
Добрый вечер, спасибо за отзыв.
По асинхронности я начал серию - следите за обновлениями. На все вопросы за исключением threading и contextvars я в ней отвечу. По contexvars пока в планах пока даже не рассматривал (уж очень тема специальная и в целом относительно низкоуровневая).
@@zaemiel Уже приступил к изучению с азов о socket, ютуб любезно решил скрыть от меня полезные знания. Огромное спасибо, Олег, как за труды, так и за ваше терпение отвечать/читать комментарии и что самое главное слушать их.
Я помню пример использования yield для программирования пульта для телевизора. Переключение каналов.
И еще. Я думаю что кроме функции next() должна быть и функция preview().Ибо это логично.
You are the god of explanations :D , a huge thank you and respect Oleg
Thank you!
Это лучшее объяснение, спасибо)
спасибо
спасибо огромное!!!
Спасибо большое.
Спасибо!
Спасибо, Олег!
Очень уверенно, спасибо!
лучший..... просто лучший
range цикла for принимает/выдаёт целые значения. Вместо range можно написать генератор, который выдает float.
Лучший гайд канал по питону. Спасибо, Олег.
А вот, кстати, поиск файлов, как минимум, в проводнике винды работает же как генератор. Хороший пример, чтобы понять в чем отличие от вываливания всего списка в конце поиска.
На другом языке пришлось реализовывать генератор с возвратом управления, а тут все лаконично:)
Я бы использовал while n > 0 в первых примерах. А так, всё круто!
Хорошее видно!)
Спасибо
Генераторы часто используются в асинхроных корутинах. Глядишь и до асинхронных движков доберемся
coroutine - и есть генераторы, subroutine - обычные функции. В Python нет формального закрепления понятию coroutine, а аналогичную функцию как раз выполняют генераторы.
Если верить tornado, то корутины могут быть основаны не только на фун. генераторах но и на конструкции async await
Python 3.5 introduces the async and await keywords (functions using these keywords are also called “native coroutines”). Starting in Tornado 4.3, you can use them in place of most yield-based coroutines (see the following paragraphs for limitations).
Почитайте PEP 492 он определил(закрепил) coroutine как часть языка.
www.python.org/dev/peps/pep-0492/
Мне вообще кажется, что мы с вами говорим об одном и том же разными словами.
Раздел Coroutine object methods.
Coroutines are based on generators internally, thus they share the implementation
Ок, они закрепили формально понятие coroutine
ну пора и async/await объяснять
нормально обьяснения не встречал )) так что до всех дошло
автор спасибо тебе! очень доходчиво и понятно! а самое главное ты указал где это обычно применяется! из ходя из этого все стало понятно!
Чудесное объянсение. Ешё вроде генераторы можно использовать для ленивых вычислений, если я не ошибаюсь
Автор, ты не упоминул, что делать с ошибкой, когда в генераторе кончатся данные.
Только один момент ты не рассказал. Что при вызове генератора посредством next он работает до yield, а n-1 остаётся на следующее обращение. Или это работает не так?
все четко объясняешь , продолжай в том же духе
Не понятно с примером поиска на сайте
Если пользователю нужно вывести первые 50, или от список от 50 до 100 товаров, то не проще ли запрос к базе соответствующий написать - не всё выдавать, а только нужный диапазон?
Не то чтобы проще, а именно так и делают. Никто не делает это через генераторы ); Генераторы могут подойти для генерации данных (рандомных или еще по какому-то алгоритму), но выбирать из базы на их основе - это плохая тема.
Спасибо за видео. Прочитал книгу и не понял. Просмотрев ваш видеоролик понял эту тему.
Так как комменты пишу под роликами исключительно для продвижения канала, то расскажу, что в этом ролике Олег не использует звук 'th'
Из-за этого его 'pyTHon casts' превратились в "пайТон кастс"
В предыдущих роликах он так не делал
Это не упрёк, а так, наблюдение
Ибо в первом ролике вообще "питоний" пакетный менеджер
Дико доставляет авторская манера повествования
Видно, что получает удовольствие не только от того, что учит кого-то чему-то
Но и потому, что учит этому так и тому, как и чему хочет он, не загоняя себя в рамки программы/учебного плана
а есть видео реализации (синтаксических или бинарных) парсеров на генераторах?
нет, я пока не делал
Здравствуйте.Я посмотрел ваше видео и у меня есть вопрос.Что нужно написать, что б так-же само рандомно появилось одно из 3 предложений (знаю не по теме).Например print ("1предл.", "2 предл.", "3предл.").Как сделать что б вывелось только одно из трёх предложений?
смотрите random.choice()
@@zaemiel спасибо огромное!
Надо проверять что n>0 до работы с n .
мне постоянно выдает вот такое или подобное, ошибок нет и что это не понятно
из базы то эти данные тоже надо вытянуть)
о боже!
У Генератор есть одна притягательная особенность: упражняясь с ним в общественном месте, вы обязательно привлечете внимание окружающих. Вот сейчас сестра показывает мне Генератор и корчит рожи. Какой низкий уровень культуры. Да куда нам в будущее рваться, с настоящим бы поладить, но что поделать, такова жизнь. Не буду забегать вперед, пытаться философствовать, пожалуй пойду посмотрю я кинофильм, где в главной роли Генератор. Приятная у нас беседа получается. Рад, что удалось поговорить. Хорошо. Если у вас есть Генератор, он от вас никогда не уйдет. Я бы просто смирился и жил с этим дальше. Вот так вот, господа. Разрыв мозга, или что они курят? Может быть Генератор? Правда, может я, хммм, сильно старомоден. Американцы до сих пор не понимают некоторые вещи, на всякого мудреца довольно простоты, или, как говорят на Руси, на всякий хитрый Генератор найдется Генератор винтом. Господин S. в недоумении: «Не могу понять, в чем дело. Я вижу, что Генератор носит мое имя, мое лицо и мое пальто, и что Генератор посвящаются стихи, подписанные «для тебя» и отправленные на мой почтовый адрес». Никто никогда не имел столько названий, сколько их есть у Генератор: «Лик Земли», «Генератор Востока», «Драгоценная жемчужина», «Сияющая точка земного шара». Генератор - не единственная связь человека с человеком. А вот «Ротаренег» - это Генератор наоборот.
Что вы курите?
Или я так туго соображаю, или эта функция 'yield' слишком сложная. Если честно, то я нихрена не понял.
и не понял, что мешает при поиске данных в файле, прервать обычный цикл и вывести результат и если нужно можно и дальше продолжить искать
увы, суть объяснения до вас, похоже, не дошла.
Это видео не про поиск, а про работу генераторов. Про поиск - это всего лишь жалкая аналогия или пример, просто чтобы проиллюстрировать суть работы генератора.
Или, если хотите - это создание еще одной ассоциации того, чего вы еще не знаете с тем, что уже знаете.
Фуф. спасибо большое.