PYTHON · 함수
yield from
yield from으로 하위 제너레이터에 위임하여 제너레이터 체이닝을 간결하게 합니다.
함수고급yield from위임제너레이터delegation
핵심 설명
yield from으로 하위 제너레이터에 위임하여 제너레이터 체이닝을 간결하게 합니다.
Python code
# yield from 기본
def inner():
yield 1
yield 2
yield 3
def outer():
yield 0
yield from inner() # 하위 제너레이터에 위임
yield 4
print(list(outer())) # [0, 1, 2, 3, 4]
# 트리 순회에 활용
def flatten(items):
for item in items:
if isinstance(item, (list, tuple)):
yield from flatten(item)
else:
yield item
nested = [1, [2, [3, 4], 5], [6, 7]]
print(list(flatten(nested))) # [1, 2, 3, 4, 5, 6, 7]
# yield from의 반환값
def sub_gen():
yield "a"
yield "b"
return "완료!"
def main_gen():
result = yield from sub_gen()
print(f"sub_gen 반환: {result}")
for v in main_gen():
print(v)
# a, b, sub_gen 반환: 완료!학습 팁
yield from은 하위 제너레이터의 send()와 throw()도 자동으로 전달합니다.
주의할 점
yield from은 이터러블만 받습니다. 일반 함수의 반환값을 전달하려면 yield를 사용하세요.
자주 묻는 질문
yield from란 무엇인가요?
yield from 으로 하위 제너레이터에 위임하여 제너레이터 체이닝을 간결하게 합니다.
yield from 학습 시 주의할 점은 무엇인가요?
yield from 은 이터러블만 받습니다. 일반 함수의 반환값을 전달하려면 yield 를 사용하세요.