다른 제너레이터에서 생성된 값을 상위 제너레이터 함수가 생성해야할 때는 전통적으로 중첩된 for 루프를 사용했다.
def chain(*iterables):
for it i iterables:
for i in it:
yield i
s = 'ABC'
t = tuple(range(3))
list(chain(s,t))
chain() 제너레이터 함수는 입력받은 각각의 반복형에 차례대로 위임된다.
def chain(*iterables):
for i in iterables:
yield from i
list(chain(s,t))
yielf from i 문이 내부 for 루프를 완전히 대체한다.
루프를 대체하는 일 외에도 yielf from은 외부 제너레이터의 호출자와 내부 제너레이터를 연결하는 통로로 만들다.
제너레이터를 코루틴으로 사용해서 호출자 코드에 값을 생성해줄 뿐만 아니라 호출자 코드에서 가져온 값을 소비하는 경우에는 정말 중요해진다.