single
Генераторні функції
Свайпніть щоб показати меню
Генераторна функція — це особливий тип функції, яка використовує ключове слово yield замість return для створення послідовності значень. При виклику генераторної функції повертається об'єкт-ітератор, який можна перебирати для отримання значень по одному.
Головна перевага генераторних функцій — їхня ефективність використання пам'яті. Генераторні функції створюють значення по мірі необхідності, а не формують всю послідовність одразу. Це робить їх ефективними щодо пам'яті, особливо при роботі з великими наборами даних або нескінченними послідовностями.
Розглянемо простий приклад генератора. Ця функція по черзі повертає логіни зі списку:
12345678910111213141516def 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))
Принцип роботи генератора полягає в тому, що він дозволяє повертати значення по одному за допомогою ключового слова yield, без збереження всіх значень у пам'яті одночасно. У нашому прикладі генератор unique_logins_from_list перебирає список логінів, повертаючи кожен з них через yield і призупиняється в цій точці. При виклику next() генератор продовжує виконання з місця зупинки, ефективно повертаючи значення без необхідності зберігати весь список у пам'яті одночасно. Це робить генератори особливо корисними для обробки великих наборів даних або потоків даних.
Swipe to start coding
Генерація унікальних ідентифікаторів користувачів за допомогою генераторної функції. Функція id_generator() повинна безперервно створювати ідентифікатори на кшталт "ID_1", "ID_2" тощо.
- Ініціалізуйте змінну
countзі значенням 1, оскільки ідентифікатори починаються з 1. - Використовуйте нескінченний цикл
whileдля безперервної генерації ідентифікаторів. - Застосуйте
yieldдля повернення поточного ідентифікатора у форматіf"ID_{count}". - Збільшуйте
countна 1 після кожної ітерації. - Ініціалізуйте генераторний об'єкт
id_gen, викликавшиid_generator().
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат