본문 바로가기
성장하기/Python

yield

by 솔로 슈퍼스타 2023. 6. 16.
728x90

yield는 파이썬에서 함수를 제너레이터(generator)로 만들어주는 키워드입니다. 제너레이터는 값을 생성해주는 이터레이터(iterator)를 생성하는 함수입니다. 이터레이터는 next() 함수를 사용하여 값을 한 번에 하나씩 반환하는 객체입니다.

yield를 사용하여 함수를 제너레이터로 만들면, 함수가 호출될 때마다 실행이 중단되고 값을 반환합니다. 그리고 함수의 상태는 유지되며, 다음에 호출될 때 중단된 지점에서부터 다시 실행됩니다. 이를 통해 제너레이터는 순차적인 값을 생성하면서 메모리를 효율적으로 관리할 수 있습니다.

제너레이터 함수를 정의할 때 yield 키워드를 사용하여 값을 생성합니다. 예를 들어, 1부터 시작하여 1씩 증가하는 값을 반환하는 제너레이터 함수를 작성해보겠습니다:

 

def generate_numbers():
    num = 1
    while True:
        yield num
        num += 1


위의 예시에서 generate_numbers 함수는 무한히 숫자를 생성하는 제너레이터 함수입니다. 함수 내부에서 yield num을 사용하여 값을 반환하면서 함수의 실행이 중단됩니다. num은 다음 호출에서 중단된 지점에서부터 1씩 증가하며 값을 생성합니다.

제너레이터 함수를 사용하는 예시는 다음과 같습니다:

 

numbers = generate_numbers()
print(next(numbers))  # 1
print(next(numbers))  # 2
print(next(numbers))  # 3

위의 예시에서 generate_numbers 함수를 호출하여 numbers라는 제너레이터 객체를 생성합니다. next() 함수를 사용하여 값을 하나씩 가져옵니다. 제너레이터는 필요한 만큼의 값을 생성하므로 무한한 수의 값을 생성할 수 있습니다. 따라서 next() 함수를 호출할 때마다 다음 값을 생성하며 호출됩니다.

yield 키워드를 사용하여 제너레이터 함수를 작성하면 복잡한 반복 구조나 큰 데이터 집합을 한 번에 메모리에 저장하지 않고도 효율적으로 처리할 수 있습니다. 제너레이터는 데이터 스트림을 생성하거나 큰 파일을 조각으로 나누어 처리하는 등의 작업에 유용하게 사용됩니다.

'성장하기 > Python' 카테고리의 다른 글

maketrans 와 translate  (0) 2023.06.16
dataclass  (0) 2023.06.16
Union-Find  (0) 2023.06.16
product  (0) 2023.06.15
ord  (0) 2023.06.15