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 для створення послідовності значень. При виклику генераторної функції повертається об'єкт-ітератор, який можна перебирати для отримання значень по одному.

Note
Визначення

Об'єкт-ітератор — це об'єкт, який реалізує протокол ітератора, визначаючи методи __iter__() та __next__(). Це дозволяє отримувати елементи по одному за допомогою next(), що робить можливим перебір елементів у послідовностях або генераторних функціях.

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

Як працює 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