본문 바로가기
프로그래밍/python

9. 파이썬 기본 개념 : 제너레이터와 이터레이터

by 마루의 일상 2024. 3. 28.
728x90
반응형

제너레이터(Generator)

제너레이터는 연속된 데이터를 만들어내는 함수입니다. 제너레이터는 각 데이터를 생성하고 메모리에 저장하지 않고, 필요할 때마다 데이터를 생성합니다. 이는 메모리를 효율적으로 사용하며, 대용량 데이터를 처리할 때 유용합니다.

제너레이터 함수는 함수 내부에서 yield 키워드를 사용하여 값을 반환하면서 일시적으로 함수의 실행을 중단하고, 호출자에게 제어를 반환합니다. 호출자는 제너레이터에서 반환한 값을 사용하고, 다음에 호출될 때까지 기다립니다.

예제:

 

def my_generator(): 
	yield 1 
    yield 2 
    yield 3 
gen = my_generator() 

print(next(gen)) # 1 출력 
print(next(gen)) # 2 출력 
print(next(gen)) # 3 출력

이터레이터(Iterator)

이터레이터는 값을 차례대로 꺼낼 수 있는 객체입니다. 이터레이터는 __iter__()와 __next__() 메서드를 구현하여 값을 차례대로 반환합니다. 이터레이터는 for 반복문에서 사용되거나 next() 함수로 값을 차례대로 얻을 수 있습니다.

예제:

class MyIterator: 
	def __init__(self): 
    	self.num = 0 
    
    def __iter__(self): 
    	return self 
    
    def __next__(self): 
    	if self.num <= 5: 
        	value = self.num 
            self.num += 1 
            return value 
        else: raise StopIteration 
        
my_iter = MyIterator() 
for item in my_iter: 
	print(item) # 0부터 5까지 순차적으로 출력

제너레이터 vs 이터레이터

  • 제너레이터는 값을 생성해주는 함수이며, yield 키워드를 사용하여 값을 반환합니다. 제너레이터는 호출자에게 값을 반환하고, 다음에 호출될 때까지 실행을 중단합니다.
  • 이터레이터는 값을 차례대로 반환하는 객체이며, __iter__()와 __next__() 메서드를 구현하여 값을 반환합니다. 이터레이터는 for 반복문에서 사용되거나 next() 함수로 값을 차례대로 얻을 수 있습니다.
728x90
반응형