Генераторні Функції та Yield
Свайпніть щоб показати меню
Генераторні функції — це особливий тип функцій у Python, які дозволяють створювати ітератори простим і зрозумілим способом. На відміну від звичайних функцій, які повертають одне значення і завершують виконання, генераторні функції можуть призупиняти свою роботу та відновлювати її пізніше, по черзі повертаючи серію значень.
yield — це ключове слово Python, яке використовується всередині генераторних функцій для повернення значення та призупинення стану функції. Коли генератор відновлює роботу, він продовжує виконання з того місця, де був зупинений.
Це дозволяє перебирати послідовності по одному значенню без створення проміжних списків, що робить код більш ефективним щодо використання пам’яті.
Як працюють генераторні функції?
Генераторна функція виглядає як звичайна функція, але використовує ключове слово yield замість return. Коли Python зустрічає оператор yield, він призупиняє виконання функції та повертає отримане значення виклику. Наступного разу, коли ви запитуєте значення, функція продовжує виконання з того місця, де була зупинена.
Як працює генераторна функція
- Оголосіть функцію за допомогою
defі додайте хоча б один операторyield; - При виклику функції код всередині не виконується одразу. Натомість повертається генераторний об’єкт;
- Кожного разу, коли ви запитуєте наступне значення (за допомогою
next()або циклуfor), функція виконується до зустрічі зyield; - Оператор
yieldповертає значення виклику та призупиняє стан функції; - При наступному запиті значення функція відновлює виконання після останнього
yield; - Функція продовжує роботу, доки не закінчаться значення або не буде досягнуто
returnчи кінця коду.
Переваги використання генераторних функцій:
- Економія пам’яті завдяки поелементному створенню значень замість формування великих списків;
- Зрозумілий і підтримуваний код для потоків даних або послідовностей;
- Зручна робота з нескінченними або дуже великими наборами даних без завантаження всього в пам’ять.
Генераторні функції — це потужний інструмент для ефективної обробки даних і важлива складова функціонального стилю програмування в Python. Далі ви побачите, як саме писати та використовувати генераторні функції на практичних прикладах коду.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат