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

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

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

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

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

Принцип роботи генератора полягає в тому, що він дозволяє повертати значення по одному за допомогою ключового слова yield, без збереження всіх значень у пам'яті одночасно. У нашому прикладі генератор unique_logins_from_list перебирає список логінів, повертаючи кожен з них через yield і призупиняється в цій точці. При виклику next() генератор продовжує виконання з місця зупинки, ефективно повертаючи значення без необхідності зберігати весь список у пам'яті одночасно. Це робить генератори особливо корисними для обробки великих наборів даних або потоків даних.

Завдання

Swipe to start coding

Генерація унікальних ідентифікаторів користувачів за допомогою генераторної функції. Функція id_generator() повинна безперервно створювати ідентифікатори на кшталт "ID_1", "ID_2" тощо.

  1. Ініціалізуйте змінну count зі значенням 1, оскільки ідентифікатори починаються з 1.
  2. Використовуйте нескінченний цикл while для безперервної генерації ідентифікаторів.
  3. Застосуйте yield для повернення поточного ідентифікатора у форматі f"ID_{count}".
  4. Збільшуйте count на 1 після кожної ітерації.
  5. Ініціалізуйте генераторний об'єкт id_gen, викликавши id_generator().

Рішення

Все було зрозуміло?

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain how the generator resumes execution after each yield?

What happens if I call next() more times than there are items in the list?

Can you show a real-world scenario where using a generator is better than a regular function?

close

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

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

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

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

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

Принцип роботи генератора полягає в тому, що він дозволяє повертати значення по одному за допомогою ключового слова yield, без збереження всіх значень у пам'яті одночасно. У нашому прикладі генератор unique_logins_from_list перебирає список логінів, повертаючи кожен з них через yield і призупиняється в цій точці. При виклику next() генератор продовжує виконання з місця зупинки, ефективно повертаючи значення без необхідності зберігати весь список у пам'яті одночасно. Це робить генератори особливо корисними для обробки великих наборів даних або потоків даних.

Завдання

Swipe to start coding

Генерація унікальних ідентифікаторів користувачів за допомогою генераторної функції. Функція id_generator() повинна безперервно створювати ідентифікатори на кшталт "ID_1", "ID_2" тощо.

  1. Ініціалізуйте змінну count зі значенням 1, оскільки ідентифікатори починаються з 1.
  2. Використовуйте нескінченний цикл while для безперервної генерації ідентифікаторів.
  3. Застосуйте yield для повернення поточного ідентифікатора у форматі f"ID_{count}".
  4. Збільшуйте count на 1 після кожної ітерації.
  5. Ініціалізуйте генераторний об'єкт id_gen, викликавши id_generator().

Рішення

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

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

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

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

single

some-alt