
yield와 yield from은 제너레이터 함수에서 값을 반환하는 데 사용되는 키워드입니다. 그러나 사용 방식과 동작에 차이가 있습니다.
yield: yield는 현재 제너레이터 함수의 실행을 일시 중단하고 값을 반환합니다. 그리고 다음에 호출되었을 때 이전 실행 상태를 유지한 채로 실행을 재개합니다. 따라서, yield는 단일 값을 반환하거나 반복적으로 값을 반환할 수 있습니다.
yield from: yield from은 다른 제너레이터, 이터러블, 또는 이터레이터에 포함된 값들을 순차적으로 반환합니다. 즉, 다른 이터러블을 내부적으로 순회하고 값을 하나씩 반환합니다. yield from은 내부 이터레이터의 모든 값을 자동으로 처리하므로 중첩된 반복문이 필요하지 않습니다.
예를 들어, 아래의 두 코드 예시는 동일한 동작을 수행합니다:
pythondef generator():
iterable = [1, 2, 3]
for item in iterable:
yield item
# 또는
def generator():
iterable = [1, 2, 3]
yield from iterable
두 예시는 제너레이터 함수에서 iterable의 값을 하나씩 반환합니다. 그러나 yield from을 사용한 경우 코드가 간결해지고 내부 이터레이션을 수동으로 관리할 필요가 없습니다.
따라서, yield는 제너레이터 함수 내에서 직접 값을 반환하고, yield from은 다른 이터러블을 사용하여 값들을 반환하는 데 활용됩니다.