Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Генераторні функції | Специфікація Значення, Що Повертається Функцією
Підручник з функцій Python
Секція 4. Розділ 4
single

single

Генераторні функції

Свайпніть щоб показати меню

Note
Визначення

Генераторна функція — це особливий тип функції, яка використовує ключове слово yield замість return для створення послідовності значень. Коли генераторна функція викликається, вона повертає об'єкт-ітератор, який можна перебирати для отримання значень по одному.

Основна перевага генераторних функцій — ефективне використання пам'яті. Замість створення всієї послідовності наперед і зберігання її в пам'яті, генератори створюють значення на льоту у міру необхідності.

Як працює yield

На відміну від return, який повністю завершує виконання функції, yield призупиняє функцію та зберігає її стан. Під час наступного виклику next() генератор продовжує виконання саме з того місця, де був зупинений:

12345678910
def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3

Можна також ітеруватися по генератору за допомогою циклу for – він автоматично викликає next(), поки генератор не буде вичерпано:

1234567
def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Note
Примітка

Коли генератор вичерпано (немає більше значень для повернення через yield), виклик next() призведе до помилки StopIteration. Цикл for обробляє це автоматично.

Завдання

Проведіть, щоб почати кодувати

Реалізація генераторної функції even_numbers, яка повертає парні числа у заданому діапазоні.

  1. Визначення генераторної функції even_numbers, що приймає два параметри: start та stop.
  2. Використання циклу while для ітерації, поки start менше або дорівнює stop.
  3. Використання yield для повернення значення start лише якщо воно парне (ділиться на 2).
  4. Збільшення start на 1 після кожної ітерації.
  5. Використання циклу for для виведення всіх згенерованих значень.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 4
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt