Понимание генераторов Python
Генераторы Python - это особый тип функций, которые позволяют создавать итераторы. В отличие от обычных функций, которые возвращают значение и затем завершаются, генераторы можно приостанавливать и возобновлять, что позволяет им генерировать последовательность значений со временем.
Генераторы особенно полезны при работе с большими или бесконечными наборами данных, так как они могут выдавать значения по одному, а не генерировать весь набор данных сразу и хранить его в памяти.
Основное различие между генератором и обычной функцией - это использование ключевого слова yield
вместо ключевого слова return
. Когда вызывается функция - генератор, она возвращает объект - генератор, который затем можно перебирать, чтобы получить значения, сгенерированные функцией.
Вот простой пример функции - генератора, которая генерирует первые n
чисел Фибоначчи:
def fibonacci(n):
a, b = 0, 1
for i in range(n):
yield a
a, b = b, a + b
В этом примере функция fibonacci()
является функцией - генератором, которая использует ключевое слово yield
для возврата каждого числа Фибоначчи, а не возврата всей последовательности сразу.
Чтобы использовать этот генератор, вы можете создать экземпляр функции fibonacci()
и затем перебрать значения, которые она генерирует:
fib = fibonacci(10)
for num in fib:
print(num)
Это выведет первые 10 чисел Фибоначчи:
0
1
1
2
3
5
8
13
21
34
Генераторы также могут быть использованы в широком спектре других приложений, таких как обработка больших наборов данных, реализация корутин и создание пользовательских структур данных.