TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #2442 5.13K
​yield: понять и полюбить

yield — это «сводный брат» return. Каждый раз, когда в коде для генератора встречается этот оператор, выполнение приостанавливается, и значение, указанное после yield, возвращается генератору. Затем выполнение возобновляется с того же места и продолжается до встречи следующего yield.

Для примера, посмотрим на простой генератор, который возвращает числа от 1 до 10:

def infinite_sequence():
num = 0
while True:
yield num
num += 1

Этот код создает функцию-генератор infinite_sequence(), которая возвращает числа. Каждый раз, когда выполняется оператор yield, значение i возвращается генератору как текущее, и выполняется приостановка до следующей итерации.

Вызвав эту функцию, мы получим:

for i in infinite_sequence():
print(i, end=" ")

>>> 0 1 2 3 4 5 6

И так, пока не остановим выполнение кода.

Yield очень полезен при работе с большими объемами данных, когда недостаточно памяти для загрузки всего набора данных в память. Генератор сможет вернуть список значений по одному, не занимая много памяти.

#лучшиепрактики
  • 👍 30
More from @zen_of_python
  1. Oct 13, 2026Почему lru_cache удерживает объекты в памяти Декоратор lru_cache хранит аргументы и резуль…
  2. Oct 13, 2026Python 3.10 больше не получает исправления безопасности Версия 3.10.22 стала последней в с…
  3. Oct 12, 2026🧑‍💻 Какие навыки помогают вам в разработке в 2026 году? Что вы чаще используете в работе…
  4. Oct 12, 2026Как PEP 827 предлагает выводить тип выбранных полей ORM-запрос выбирает name и email, но с…
  5. Oct 12, 2026Что мешает запускать Python из снимка памяти Импорты и инициализация повторяются при каждо…
  6. Oct 12, 2026Почему тайм-аут не всегда заканчивается ровно по часам asyncio.TaskGroup владеет созданным…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →