Learn AI with Python · Урок

Генераторы

Разберитесь в генераторах и их применении для создания итераторов

Урок 2 из 511 шагов

«Генераторы» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 5 уроков всего.

Введение в генераторы

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

В этом уроке Вы узнаете, как создавать и использовать генераторы в Python.

Генераторы — иллюстрация 1

Что такое генератор

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

# Basic generator example
def my_generator():
    yield 1
    yield 2
    yield 3

# Using the generator
gen = my_generator()
print(next(gen))  # Outputs: 1
print(next(gen))  # Outputs: 2
print(next(gen))  # Outputs: 3

Как работают генераторы

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

# Example: Generating a range of numbers
def range_generator(start, end):
    while start < end:
        yield start
        start += 1

for number in range_generator(1, 5):
    print(number)  # Outputs: 1, 2, 3, 4

Выражения-генераторы

Выражения-генераторы похожи на включения списков, но вместо квадратных скобок используют круглые. Они создают генераторы, а не списки.

# Generator expression
gen_exp = (x * x for x in range(5))

for value in gen_exp:
    print(value)  # Outputs: 0, 1, 4, 9, 16

Генераторы и списки

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

# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]

# Generator expression
gen_exp = (x * x for x in range(1000000))

# List comprehension uses more memory
print(type(list_comp))  # Outputs: <class 'list'>
print(type(gen_exp))    # Outputs: <class 'generator'>

Варианты использования генераторов

Генераторы идеально подходят для:

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

Бесконечные генераторы

Генераторы могут создавать бесконечные последовательности, например бесконечную последовательность чисел. Не забудьте остановить цикл, чтобы предотвратить бесконечное выполнение.

# Infinite generator example
def infinite_sequence():
    num = 0
    while True:
        yield num
        num += 1

# Using the infinite generator
for i in infinite_sequence():
    if i > 5:
        break
    print(i)  # Outputs: 0, 1, 2, 3, 4, 5

Функции-генераторы с несколькими операторами yield

Функции-генераторы могут содержать несколько операторов yield, что позволяет создавать сложные последовательности:

# Multiple yields in a generator
def multi_yield():
    yield "First"
    yield "Second"
    yield "Third"

for value in multi_yield():
    print(value)  # Outputs: First, Second, Third

Распространённые ошибки при работе с генераторами

Вот несколько ошибок, которых следует избегать:

  • Использование return вместо yield в функции-генераторе.
  • Непотребление генератора с помощью цикла или next().
  • Использование генераторов для небольших наборов данных, когда больше подходят списки.

Что мы узнали?

В этом уроке Вы узнали:

  • Что такое генераторы и как они работают в Python.
  • Как использовать yield для создания функций-генераторов.
  • О различиях между генераторами и списками.
  • О вариантах использования генераторов, например для создания бесконечных последовательностей и работы с большими наборами данных.

Вы отлично справились! Перейдём к следующей теме.

Генераторы — иллюстрация 11
Можно начать бесплатно

Изучай Python с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
53
Уроки
225

Часто задаваемые вопросы

Урок «Генераторы» бесплатный?

Да — полный текст урока «Генераторы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 5 уроков всего.

Чему я научусь в уроке «Генераторы»?

Разберитесь в генераторах и их применении для создания итераторов Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 5.

Сколько времени занимает урок «Генераторы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Декораторы
  2. Генераторы
  3. Менеджеры контекста (операторы with)
  4. Генераторы выражений (списки, множества и словари)
  5. Итераторы и итерируемые объекты
← Назад к Learn AI with Python