Python 3 yield: что это и зачем использовать?

"yield" в Python 3 — это ключевое слово, используемое для создания генераторов. Генераторы позволяют создавать итерируемые объекты, которые могут возвращать значения одно за другим, не загружая все значения в память одновременно.

Вот простой пример использования "yield" в функции:


    def generate_numbers():
        for i in range(1, 6):
            yield i

    numbers = generate_numbers()

    for num in numbers:
        print(num)
    

В этом примере функция "generate_numbers" содержит ключевое слово "yield", которое возвращает числа от 1 до 5 одно за другим при каждом вызове "next()". Таким образом, мы можем итерироваться по числам, не храня их все в памяти одновременно.

Детальный ответ

Python 3: Что это такое "yield"?

"yield" - это ключевое слово в Python 3, используемое внутри функций. Оно позволяет функции стать генератором - объектом, который может временно приостановить своё выполнение и затем возобновить его позже. Генераторы предоставляют удобный способ создавать итерируемые объекты с помощью относительно небольшого объема кода.

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

Пример:


def my_generator():
    yield 1
    yield 2
    yield 3

# Создаем генераторный объект
generator = my_generator()

# Итерируем по результатам выполнения функции с помощью генераторного объекта
for value in generator:
    print(value)

# Вывод:
# 1
# 2
# 3
    

В данном примере, функция "my_generator" - это генераторная функция, так как она содержит ключевое слово "yield". Когда мы вызываем эту функцию и присваиваем результат переменной "generator", мы создаем генераторный объект.

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

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

Пример использования генератора для генерации бесконечной последовательности чисел:


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

# Создание генераторного объекта
sequence = infinite_sequence()

# Итерация по бесконечной последовательности
for value in sequence:
    print(value)

# Вывод:
# 0
# 1
# 2
# ...
    

В этом примере генераторная функция "infinite_sequence" возвращает бесконечную последовательность чисел, начиная с 0. Мы можем использовать этот генератор в цикле "for" и он будет продолжать возвращать следующее число при каждой итерации.

В заключение, ключевое слово "yield" в Python 3 позволяет функциям быть генераторами и создавать итерируемые объекты. Генераторы могут временно приостанавливать своё выполнение и возвращать результаты на каждой итерации. Они очень полезны для обработки больших объемов данных, работы с последовательностями и создания эффективных итераций.

Видео по теме

Yield Python. Полный урок по генераторам Python с нуля

Уроки Python casts #10 - Что такое yield

49 Функция генератор. Создание генератора при помощи yield Python

Похожие статьи:

🔎 Как использовать функцию append в Python для добавления элементов

🔧 Как удалить строку из таблицы SQL с помощью Python | Удаление строки из таблицы SQL с использованием Python

🔥 Что лучше: Java или Python разработчик? Узнайте и выберите лучшего кандидата! 🤔

Python 3 yield: что это и зачем использовать?

Значение import re python что значит и его влияние на SEO.

Как импортировать функцию из файла python: подробное руководство с пошаговыми инструкциями

🔍 Что значит команда input в Python: объяснение и примеры использования