이터레이터와 반복 가능한 객체의 차이점

이터레이터와 반복 가능한 객체는 파이썬에서 반복 작업을 수행하기 위해 사용되는 개념이다. 이 둘은 유사해 보일 수 있지만, 실제로는 몇 가지 중요한 차이점이 존재한다. 이번 글에서는 이터레이터와 반복 가능한 객체의 차이점에 대해 자세히 알아보겠다.

반복 가능한 객체

반복 가능한 객체는 __iter__() 메서드를 구현하여 생성된 객체이다. 이 메서드는 객체가 반복 가능하다고 선언하는 역할을 한다. 반복 가능한 객체는 for 문을 사용하여 반복 작업을 수행할 수 있다. 예를 들면, 리스트, 튜플, 문자열과 같은 시퀀스 객체가 반복 가능한 객체의 예시이다.

my_list = [1, 2, 3]
for item in my_list:
    print(item)

이터레이터

이터레이터는 __next__() 메서드를 구현하여 생성된 객체이다. __next__() 메서드는 다음 값을 리턴하거나 StopIteration 예외를 발생시키는 역할을 한다. 이터레이터는 __iter__() 메서드를 구현하며, 이는 이터레이터 자신을 반환한다. 이터레이터는 for 문과 next() 함수를 사용하여 반복 작업을 수행할 수 있다.

my_list = [1, 2, 3]
my_iter = iter(my_list)
print(next(my_iter))  # 1
print(next(my_iter))  # 2
print(next(my_iter))  # 3

차이점

간단히 말해, 반복 가능한 객체는 여러 번 반복이 가능하고, 이터레이터는 한 번만 반복이 가능하다. 이는 반복 가능한 객체는 매번 새로운 이터레이터를 생성할 수 있다는 의미이다. 반면에 이터레이터는 한 번의 반복 후에는 더 이상 값을 제공할 수 없다.

이터레이터는 메모리를 효율적으로 사용한다는 장점이 있다. 값을 필요로 할 때마다 한 번에 하나씩 얻을 수 있기 때문에, 모든 값이 한꺼번에 메모리에 로드되지 않는다.

결론

이터레이터와 반복 가능한 객체는 파이썬에서 반복 작업을 수행하는 데 사용되는 중요한 개념이다. 이 둘은 유사해 보일 수 있지만, 이터레이터는 한 번의 반복 후에 더 이상 값을 제공할 수 없고, 메모리를 효율적으로 사용할 수 있다는 차이점이 있다. 따라서, 이터레이터와 반복 가능한 객체의 차이를 이해하면 반복 작업을 더 효과적으로 다룰 수 있을 것이다.

#파이썬 #이터레이터 #반복가능한객체