49 Функция генератор. Создание генератора при помощи yield Python

  Рет қаралды 70,303

egoroff_channel

egoroff_channel

Күн бұрын

🔥🔥🔥 Инди-курс по Python 🔥🔥🔥
stepik.org/course/63085/promo
👉👉👉 Свой вопрос по курсу можешь задать в чате
t.me/+SlnNhAO7caBlNDM6
👉👉👉 Также подписывайся на мой телеграмм-канал
t.me/python_egoroff
egoroffartem.pythonanywhere.co...
Функция-генератор могут возвращать значение и приостанавливать свою работу, а позднее продолжить свою работу с места остановки
Для создания функции генератора используется ключевое слово yield.
Генератор - итератор, элементы которого можно итерировать только один раз
Итератор - объект, который поддерживает функцию next(). Помнит о том, какой элемент будет браться следующим
Итерируемый объект - объект, который предоставляет возможность обойти поочередно свои элементы. Может быть преобразован к итератору.
Выражения - генераторы Python
• 48 Генераторы и итерат...
egoroffartem.pythonanywhere.co...
На сайте будет выкладываться более подробная информация о данном курсе и будущих видео.
Все видео этого курса можете найти на сайте
egoroffartem.pythonanywhere.co...
или в Вк
videos-177962775?secti...
Если кому нужна помощь, предлагаю индивидуальные занятия. Подробнее пишите в личку в вк
artem_egoroff
python.study
В данном группе можете найти информацию о новых видео и задать вопросы

Пікірлер: 74
@egoroffchannel
@egoroffchannel 2 ай бұрын
🫵 Теория без практики - ничто, поэтому 👇 🐍 stepik.org/course/63085/promo 👉 специально для тебя создал бесплатный топовый курс по Python 👉 В нем тебя ждет: 📗 более 400 практических заданий на программирование 📗 более 250 тестовых заданий на проверку материала 📗 десятки часов видеоматерилов по теории 📗 видеоразборы решения заданий 📗 текстовые материалы по урокам, примеры кода 📗 доступ к закрытому чату с дружественной обстановкой 📗 сертификат в случае успешного прохождения курса
@user-fo5jo9zz9o
@user-fo5jo9zz9o 2 жыл бұрын
Артем ❤️ спасибо большое , вы просто супер 🙌 очень хорошо объясняете 🙏 все уроки смотрю ваши 🙌 прям очень классно объясняете 👍👍👍👍👍 и голос очень приятный ! Спасибо за ваш труд 🙏❤️
@user-ng9vs5vw4k
@user-ng9vs5vw4k 2 жыл бұрын
Чисто вот по человечески спасибо. Обычным языком разжевал!
@python_senior
@python_senior Жыл бұрын
Ждал интера, но не тут то было, на сцену вышел yield и Егорыч тяжело сглотнув все таки попробовал выговорить елд...но по привычке получилось нечто похожее на слово "елда".
@arsenshmid
@arsenshmid 3 жыл бұрын
Как же хорошо объясняете. Нам бы таких преподов))))
@CryptoSteps
@CryptoSteps 4 жыл бұрын
Луца читал, мало что понял. А теперь сначало смотрю ваше видео по теме, а после читаю Луца. Стал больше понимать. Благодарю Вас за труд!
@alexanderalexandrov3972
@alexanderalexandrov3972 4 жыл бұрын
Только за это же хотел поблагодарить. Вот, кто должен программирование в ВУЗах вести)))
@nobeing6242
@nobeing6242 4 жыл бұрын
потому что Лутц это графоманство, а не учебник
@user-fs9gp6oz8x
@user-fs9gp6oz8x 3 жыл бұрын
У меня Луц тяжело идет. Стиль изложения довольно запутанный, на мой взгляд.
@AJIagguH
@AJIagguH 3 жыл бұрын
Тоже после Лутца пришел. Однако то, что Егор рассказывает, я понимал уже из учебника (за исключением некоторых мелочей). Но Лутц ещё о других вещах касаемо генератора рассказывает. Вот их я не понял( P.S. Правда, я не очень понимаю, как на практике пригодится написание собственных функций zip и map :D
@AJIagguH
@AJIagguH 3 жыл бұрын
Я бросил Лутца на 600 странице. Рекомендую 10% времени посвящать книгам, 10% - теории, 80% - написанию кода
@ibnabdulahad3894
@ibnabdulahad3894 2 жыл бұрын
Артем спасибо большое, очень хорошо объясняете👍👍👍
@lacieemai6103
@lacieemai6103 4 ай бұрын
господи, ну как же это понятно и элегантно. спасибо!
@user-wg2vt4oq4j
@user-wg2vt4oq4j 2 жыл бұрын
Шикарные уроки, спасибо!
@elenalevasheva3830
@elenalevasheva3830 3 жыл бұрын
Спасибо за урок, просто супер.
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov Жыл бұрын
Артём, огромная благодарность! 🔥👍 💯
@denistalko6585
@denistalko6585 Жыл бұрын
Спасибо за отличное объяснение!
@user-wv8hg6gd2o
@user-wv8hg6gd2o Жыл бұрын
Очень все понятно, спасибо!
@evgenyfetus
@evgenyfetus 2 жыл бұрын
Все очень понятно!
@osipov180
@osipov180 4 жыл бұрын
Отличный канал! Подписка и лайк. Спасибо за уроки.
@kst5161
@kst5161 8 ай бұрын
Действительно хорошее объяснение)
@user-ee1lx1pe7n
@user-ee1lx1pe7n 3 жыл бұрын
Это было просто гениальное объяснение!
@Karno333
@Karno333 Жыл бұрын
Очень грамотно и по человечески объяснил. Спасибо
@user-sl7or4nn8y
@user-sl7or4nn8y 7 ай бұрын
Артем, вы гений.
@vasylcf
@vasylcf 4 жыл бұрын
Спасибо, очень доступно объясняете !
@Jimmyyroblox
@Jimmyyroblox Жыл бұрын
Спасибо большое, очень доступно и понятно, только сейчас понял хотя до этого в других источниках не понимал
@user-hu7tu5qe7b
@user-hu7tu5qe7b 3 жыл бұрын
Спасибо за урок
@mazur_vg
@mazur_vg 2 жыл бұрын
Блеск! Спасибо!!!
@Naumix_
@Naumix_ 4 жыл бұрын
спасибо за урок
@yasuperdashakakasha
@yasuperdashakakasha 3 жыл бұрын
АААА! Я не могу въехать! Обновлено: Я детально посмотрела видео на след. день и всё поняла, спасибо!
@brutsmart
@brutsmart 2 жыл бұрын
поставил лайк уже на 2й минуте. спасибо, за простое и понятное объяснение
@freedom4218
@freedom4218 4 ай бұрын
Спасибо большое
@user-p934tg3ghugh
@user-p934tg3ghugh 4 жыл бұрын
Спасибо!!
@kz_Ali
@kz_Ali 3 жыл бұрын
Огонь!
@data19101988
@data19101988 Жыл бұрын
Может, добавить какие то команды, выводящие объем занимаемой памяти или какие другие показатели эффективности yield для ещё большей наглядности...
@Klagerh
@Klagerh 4 жыл бұрын
Отлично +
@makseo651
@makseo651 3 ай бұрын
Спасибо
@shakhzodbekbozorov7866
@shakhzodbekbozorov7866 5 жыл бұрын
Больше По питону
@pulsarofsamsara1625
@pulsarofsamsara1625 Жыл бұрын
В примере с факториалом вместо yield, вписав print, получим тот же результат. Тогда преимущество функции генератора тут не совсем очевидна.
@user-uj5oq2vv4f
@user-uj5oq2vv4f Жыл бұрын
Лучший!!!
@dizelvinable
@dizelvinable 4 жыл бұрын
Остальные темы я понял. В эту что-то не могу пока въехать. Наверное, позже вернусь, когда сформируются нужные нейронные связи в моей башке))
@user-cp8yv9mz7l
@user-cp8yv9mz7l 3 жыл бұрын
Ну что, сформулировались ?
@dizelvinable
@dizelvinable 3 жыл бұрын
@@user-cp8yv9mz7l Пришлось сконцентрироваться на PHP)) Пока занят попытками въехать в ООП)
@leni2646
@leni2646 2 жыл бұрын
@@dizelvinable Ну, что въехал?
@borg9549
@borg9549 2 жыл бұрын
Ну как, дошло?
@MrSunTrope
@MrSunTrope 2 жыл бұрын
@@dizelvinable ну что там, дошло?
@jamjam3337
@jamjam3337 Жыл бұрын
👍
@BohdanVR666
@BohdanVR666 4 жыл бұрын
Получается, генератор при вызове print(next(genf())) Запускает цикл и "ставит его на паузу" до следующего next() А после его вызова она начинает выполнение кода на следующей строке Правильно понял?
@justinianbasileus2833
@justinianbasileus2833 4 жыл бұрын
Выходит, что так.
@Armlifeam
@Armlifeam 4 жыл бұрын
Я хочу индивидуальные уроки по Python
@mynzhanshaikhy456
@mynzhanshaikhy456 2 жыл бұрын
после yield, pr не обновляться опят на один?
@AzarovRom
@AzarovRom 4 жыл бұрын
всё круто, но не хватает send :(
@user-kt4yy5cf5e
@user-kt4yy5cf5e 3 жыл бұрын
Братан, а можешь напечатать чип, загрузить в него все свои знания и я их себе загружу в мозг, как в киберпанке
@egoroffchannel
@egoroffchannel 3 жыл бұрын
могу, но там будут баги)))
@yodapunishes
@yodapunishes 5 жыл бұрын
Исчерпывающе!
@sofiya41.
@sofiya41. 4 ай бұрын
почему ты находишь факториал как n + 1, а не n - 1 как объяснял в предыдущих уроках? это я не поняла
@MortalKombatSector
@MortalKombatSector 2 жыл бұрын
вот зачем нужна yield если это все равно считается итерацией словаря, я беру yield(ключ словаря) из цикла фор, потом в другом цикле вайл тру сохраняю его в список, беру из списка значение и удаляю из словаря, далее очищаю список самое интересное, что можно итерировать словарь по ключам, добавить в список (нужный вам)ключ и в "старшем цикле" фор удалить значение словаря и все работает
@MortalKombatSector
@MortalKombatSector 2 жыл бұрын
в 1 случае ошибка, нельзя изменять словарь во время итерации, зато список можно да пайтан? кто тебя пишет какой умный человек
@kuzmichok8980
@kuzmichok8980 3 жыл бұрын
Артем, в наушниках на максималках плохо слышно.
@egoroffchannel
@egoroffchannel 3 жыл бұрын
Сейчас новый микрофон
@chajnikvest1927
@chajnikvest1927 5 жыл бұрын
1
@user-wg2vt4oq4j
@user-wg2vt4oq4j 2 жыл бұрын
def fact(n): p = 1 for i in range(1, n + 1): p = p * 1 yield p for i in fact(10): print(i, end = " ") У меня получается не факториал, а список из десяти единиц. Почему?
@Mcmern
@Mcmern 2 жыл бұрын
Напиши в четвертой строчке i вместо единицы
@usj4871
@usj4871 2 жыл бұрын
yield i
@Markisi0
@Markisi0 Жыл бұрын
6:32 что значит не хранятся в списке? Вы же сами сказали выше, что функция ставится на паузу. Вы просто не явно создали этот список, а "поручили" сделать это самому python'у. 6:36 каким образом мы экономим память? В чём тут экономия? Запустите код с memory_profiler и вы увидите, что в одном, что в другом случае вы потребите 46 мегабайт памяти. В случае с yield даже больше.
@torchilla4630
@torchilla4630 Жыл бұрын
Так ты попробуй создать список с 1000000000 елементов и получишь ошибку по памяти(а если мощи компа хватит то получишь жесткое подвисание), в то время как с генератором такой ошибки не возникает. Так они и не храняться в списке, тут отдельно выдается каждое значение, сам генератор не хранит всего списка значений, а поочередно выдает каждый елемент отдельно на базе предыдущего, поэтому и память экономится, потому что мы не храним одномоментно 1000000000 елементов.
@Markisi0
@Markisi0 Жыл бұрын
@@torchilla4630 Вы точно на мой комментарий отвечали? 😑При чём тут хранение, если выше я говорил про вычисление факториала и экономию памяти? Речь о том, что потребление скриптом памяти с оператором yield и без него будет одинаковое. Можете проверить сами: Файл_1 from memory_profiler import memory_usage def fact(n): output = 1 for i in range(1, n+1): output *= i yield output def main(): output_list = [] for dig in fact(500): output_list.append(dig) print(f'{output_list[-1]=}') main() print(f' {memory_usage()=}') Файл_2 from memory_profiler import memory_usage def fact_2(n): output = 1 for i in range(1, n+1): output *= i return output def main(): output_list = [] for dig in range(501): output_list.append(fact_2(dig)) print(f'{output_list[-1]=}') main() print(f' {memory_usage()=}')
@FireFox-cp8fc
@FireFox-cp8fc 11 ай бұрын
@@Markisi0 Да, отчасти вы правы, но дело в том, что при работе с оператором yield, после вывода значения, предыдущие значения очищаються с памяти. Вот, если взять первый пример. С начало программа нам выводит число 43, потом число 65 и при выводе числа 65, число 43 стираеться с памяти, будто его и не было. А если повторить данную махинацию с оператором return, то все данные останутся в памяти. Надеюсь, что понятно обьяснил..
@Markisi0
@Markisi0 11 ай бұрын
@@FireFox-cp8fc Вы лучше объясните результат выполнения двух вариантов кода выше - почему при использовании yield и без него памяти затрачивается одинаковое количество?
@slightlygruff
@slightlygruff 2 жыл бұрын
йилд
@vsevolod9987
@vsevolod9987 Жыл бұрын
Нет
@elizabetholsen6605
@elizabetholsen6605 8 ай бұрын
Тяжко
@user-xl6gp9em1b
@user-xl6gp9em1b 8 ай бұрын
Артем, ну ты тараторишь, чуть помедленнее пожалуйста, приходится перематывать
Smart Sigma Kid #funny #sigma #comedy
00:26
CRAZY GREAPA
Рет қаралды 18 МЛН
What it feels like cleaning up after a toddler.
00:40
Daniel LaBelle
Рет қаралды 77 МЛН
路飞被小孩吓到了#海贼王#路飞
00:41
路飞与唐舞桐
Рет қаралды 82 МЛН
Gym belt !! 😂😂  @kauermtt
00:10
Tibo InShape
Рет қаралды 16 МЛН
Yield Python. Complete tutorial on Python generators from scratch
8:05
46 Генераторы списков Python | List comprehension
10:30
Пакеты в Python. Файл __init__, переменная __all__
11:48
Вложенные функции Python
8:55
egoroff_channel
Рет қаралды 43 М.
Замыкания в Python. Closure Python
10:02
egoroff_channel
Рет қаралды 75 М.
Smart Sigma Kid #funny #sigma #comedy
00:26
CRAZY GREAPA
Рет қаралды 18 МЛН