Генераторы Python — пишите суперэффективный код!

Jan 19 2023
Генераторы Python — это особый тип функций, который позволяет перебирать последовательность значений без необходимости хранить всю последовательность в памяти. Это мощный инструмент для работы с большими наборами данных или для создания бесконечных последовательностей значений.

Генераторы Python — это особый тип функций, который позволяет перебирать последовательность значений без необходимости хранить всю последовательность в памяти. Это мощный инструмент для работы с большими наборами данных или для создания бесконечных последовательностей значений.

Чем отличается от обычной функции?

Генераторная функция определяется как обычная функция, но вместо ключевого слова return используется ключевое слово yield . Когда вызывается функция генератора, она возвращает объект итератора, который можно использовать для перебора значений, сгенерированных функцией.

Зачем использовать генераторы?

Одним из основных преимуществ генераторов является то, что они эффективно используют память. Поскольку они генерируют только одно значение за раз, они могут обрабатывать большие наборы данных или бесконечные последовательности, не потребляя много памяти.

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

Хорошо.. как его использовать?

Следующая функция генератора генерирует последовательность Фибоначчи:

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
print(next(fib)) # 0
print(next(fib)) # 1
print(next(fib)) # 1
print(next(fib)) # 2

for number in fibonacci():
    if number > 100:
        break
    print(number)

Генераторы также можно использовать в сочетании с другими функциями Python, такими как генераторы списков или модуль itertools, для создания мощного и выразительного кода. Вы можете попробовать сами!

Удачи Шайло