파이썬에서 제너레이터(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()` 함수를 사용하여 값을 하나씩 가져옵니다. 이렇게 제너레이터를 사용하면 메모리를 효율적으로 사용하면서 큰 데이터 집합을 다룰 수 있습니다.
'Programming > python' 카테고리의 다른 글
python에서 xrange와 range에 대해서 알아보자 (0) | 2023.07.25 |
---|---|
python에서 dict와 list의 comprehension(내포)에 대해서 알아보자 (0) | 2023.07.25 |
python의 Shebang(해시뱅)에 대해서 알아보자 (0) | 2023.07.25 |
python에서 docstring(문서 문자열)을 사용해보자. (0) | 2023.07.25 |
unit test를 python에서 해보자 (0) | 2023.07.25 |