Ключевое слово yield
Пишите функции-генераторы с yield для создания пользовательских итераторов.
«Ключевое слово yield» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Введение
Что такое yield?
def count_up(n):
for i in range(n):
yield i
for x in count_up(3):
print(x)Функция-генератор и обычная функция
def gen():
print('start')
yield 1
print('middle')
yield 2
g = gen() # no print yet
print(next(g)) # 'start', then 1Бесконечный генератор
def naturals(n=0):
while True:
yield n
n += 1
import itertools
print(list(itertools.islice(naturals(), 5)))yield from
def chain(*iters):
for it in iters:
yield from it
print(list(chain([1,2], [3,4], [5])))Передача значений с помощью send()
def accumulator():
total = 0
while True:
n = yield total
if n is None: break
total += n
g = accumulator()
next(g) # prime
print(g.send(10))
print(g.send(5))Состояние генератора
def stateful():
seen = set()
while True:
item = yield
seen.add(item)
yield len(seen)
g = stateful()
next(g); g.send('a'); print(next(g)); g.send('b'); print(next(g))Закрытие генератора
def resource_gen():
try:
while True:
yield
finally:
print('cleaned up')
g = resource_gen()
next(g)
g.close()StopIteration и return
def gen_with_return():
yield 1
yield 2
return 'done'
g = gen_with_return()
try:
while True: print(next(g))
except StopIteration as e:
print('returned:', e.value)Генератор Фибоначчи
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
import itertools
print(list(itertools.islice(fibonacci(), 10)))Генераторы и классы с __iter__
# Generator is simpler than:
# class Counter:
# def __iter__(self): return self
# def __next__(self): ...
print('generators simplify iterators')Быстрая проверка
Повторение
Продолжить
Часто задаваемые вопросы
Урок «Ключевое слово yield» бесплатный?
Да — полный текст урока «Ключевое слово yield» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Ключевое слово yield»?
Пишите функции-генераторы с yield для создания пользовательских итераторов. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Ключевое слово yield»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Генераторы списков
- Генераторы множеств и словарей
- Генерирующие выражения
- Ключевое слово yield