Что такое генераторы в Python и для чего они используются?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
Генераторы в Python нужны для ленивой обработки последовательностей: значения создаются по одному, только когда они реально запрошены. Это помогает экономить память и удобно работать с большими объёмами данных или бесконечными потоками. Обычно генератор используют там, где не нужно хранить всю коллекцию целиком.
Определение:
Генератор — это специальный вид итератора, который возвращает значения постепенно, приостaнавливая выполнение функции между выдачами. В Python генератор обычно создают либо с помощью функции с yield, либо через генераторное выражение.
В отличие от списка, генератор не вычисляет все элементы сразу, а производит их по мере итерации.
Пример использования:
Например, нужно обработать большой лог-файл построчно и посчитать только нужные записи, не загружая весь файл в память.
def read_numbers():
for i in range(1, 6):
yield i * i
gen = read_numbers()
for value in gen:
print(value)
Пояснение кода:
В этом примере функция read_numbers() — генератор, потому что внутри используется yield.
При первом вызове yield функция возвращает 1, затем запоминает своё состояние и продолжает с этого места при следующем проходе.
Так значения 1, 4, 9, 16, 25 создаются по одному, а не как готовый список.
Если бы вместо генератора использовался список, все значения пришлось бы создать заранее. Здесь же элементы вычисляются только в момент итерации, что особенно полезно для больших данных.
Ключевые моменты:
- Генератор создаёт значения лениво, по запросу.
- Он экономит память по сравнению со списками.
- Генераторы удобно использовать для больших данных и потоковой обработки.
yieldприостанавливает функцию и сохраняет её состояние.- Генератор — это итератор, по которому можно пройтись только один раз.