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
은 다른 이터러블을 사용하여 값들을 반환하는 데 활용됩니다.