포스트

파이썬에서 yield 키워드가 무엇을 하는지 알아보자

yield 키워드의 기본 개념

yield는 파이썬의 제너레이터(generator)를 만드는 데 사용되는 키워드입니다. 제너레이터는 이터레이터(iterator)의 한 형태로, 일반적인 함수와 다르게 데이터를 한 번에 모두 반환하지 않고 필요할 때마다 하나씩 값을 생성해 반환합니다.

제너레이터와 일반 함수의 차이

일반 함수는 호출되면 코드를 실행하고, 결과를 한 번에 반환한 뒤 종료됩니다. 그러나 제너레이터 함수는 yield 키워드를 만나면 해당 위치에서 실행을 멈추고, 호출한 쪽으로 값을 전달합니다. 그 후 다시 함수가 호출되면, 멈췄던 위치부터 계속 실행합니다.

yield의 작동 방식

yield 키워드를 사용할 때는 함수를 호출하면 제너레이터 객체가 생성됩니다. 이 객체를 통해 next() 함수를 호출하면 yield가 있는 곳까지 코드가 실행되고, 그 위치의 값을 반환합니다. 다시 next()를 호출하면, 이전에 멈췄던 위치에서 계속하여 다음 yield를 만날 때까지 실행합니다.

yield를 사용하는 이유

yield를 사용하면 큰 데이터 셋을 처리할 때 메모리를 효율적으로 사용할 수 있습니다. 예를 들어, 큰 파일을 한 줄씩 읽을 때나 네트워크 스트림을 처리할 때 유용합니다.

예제 코드

1
2
3
4
5
6
7
8
9
def number_generator(n):
    for i in range(n):
        yield i

gen = number_generator(3)

print(next(gen))  # 출력: 0
print(next(gen))  # 출력: 1
print(next(gen))  # 출력: 2

이 코드에서 number_generator 함수는 0부터 n-1까지의 숫자를 차례로 반환하는 제너레이터입니다.

주의할 점

제너레이터는 StopIteration 예외를 통해 더 이상 반환할 값이 없음을 알립니다. 따라서 반복문에서 사용할 경우, 이 예외를 처리해야 합니다.

요약

yield 키워드는 제너레이터 함수를 정의하는 데 사용되며, 이 함수를 통해 큰 데이터를 효율적으로 처리할 수 있습니다. 제너레이터는 값을 하나씩 차례대로 생성해 반환하며, 메모리 사용을 최소화하는 데 도움이 됩니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.