본문 바로가기

Programming/python

python에서 generators(제네레이터)에 대해서 알아보자

파이썬에서 제너레이터(Generators)는 이터레이터(Iterator)를 생성해주는 함수입니다. 

이터레이터는 값을 한 번에 하나씩 반환할 수 있는 객체를 의미합니다.

제너레이터는 `yield` 키워드를 사용하여 값을 생성하고, 이를 호출할 때마다 하나의 값을 반환합니다.

제너레이터의 동작은 함수의 실행을 중단하고 나중에 다시 실행을 이어나가는 특징을 가집니다. 

함수가 호출되면 제너레이터 객체가 반환되며, `yield` 키워드에서 값을 반환하는 시점에서 함수 실행이 일시 중단됩니다. 

그리고 다음에 제너레이터 함수가 호출될 때 이전 상태에서 실행을 재개하면서 `yield` 키워드에서부터 이어서 값을 반환합니다.

제너레이터는 큰 데이터 집합을 한 번에 모두 생성하지 않고, 필요한 값만 요청할 때마다 생성하여 메모리를 효율적으로 사용할 수 있습니다. 

이로 인해 제너레이터는 대용량 데이터를 처리하거나 무한한 시퀀스를 다룰 때 유용하게 사용됩니다.

제너레이터를 생성하기 위해서는 함수 내부에 `yield` 키워드를 사용하고, 함수를 호출하여 제너레이터 객체를 얻습니다.

 그리고 제너레이터 객체에는 `next()` 함수를 사용하여 값을 하나씩 가져올 수 있습니다. 또는 `for` 루프를 통해 모든 값을 순회할 수 있습니다.

간단한 제너레이터 예제를 살펴보겠습니다:

def countdown(n):
    while n > 0:
        yield n
        n -= 1

# 제너레이터 객체 생성
generator = countdown(5)

# 값을 하나씩 출력
print(next(generator))  # 5
print(next(generator))  # 4
print(next(generator))  # 3
print(next(generator))  # 2
print(next(generator))  # 1


위의 예제에서 `countdown` 함수는 제너레이터를 생성합니다. 

`yield` 키워드를 통해 값을 하나씩 반환하면서 함수 실행을 일시 중단합니다.

 

 제너레이터 객체를 생성한 후 `next()` 함수를 사용하여 값을 하나씩 가져옵니다. 이렇게 제너레이터를 사용하면 메모리를 효율적으로 사용하면서 큰 데이터 집합을 다룰 수 있습니다.

반응형