Библиотека Python разработчика | Книги по питону: post #4146 — TG.ME

Оптимизация кода с помощью генераторов в Python

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

Что такое генераторы?
Генераторы — это функции, которые используют yield вместо return. Они не возвращают сразу все значения, а запоминают своё состояние и отдают результат по мере необходимости. Это особенно полезно при обработке больших объемов данных, так как позволяет не загружать всю информацию в память сразу.

Пример: экономия памяти
Допустим, нам нужно обработать миллион чисел и взять из них только четные. Обычный способ:


def get_even_numbers(n):
result = []
for i in range(n):
if i % 2 == 0:
result.append(i)
return result

numbers = get_even_numbers(10**6)
print(len(numbers)) # 500000


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

А теперь переделаем на генератор:


def get_even_numbers_gen(n):
for i in range(n):
if i % 2 == 0:
yield i

numbers = get_even_numbers_gen(10**6)
print(sum(1 for _ in numbers)) # 500000


Здесь список не создается, а элементы выдаются по одному. Это экономит память и ускоряет обработку!

Где применять?
✔️ Чтение больших файлов построчно (yield line)
✔️ Работа с потоками данных
✔️ Генерация последовательностей без создания списков


📲 Мы в MAX

👉@BookPython
August 31, 2026 214 1 2