Programming Languages/Python
파이썬 이터러블 객체(Iterable Object)와 제너레이터 (Generators)
둠드
2019. 6. 30. 15:39
<이터러블 객체(Iterable Object)>
파이썬에서 for 문과 함께 리스트나 문자열 등이 사용될 수 있었다. 뿐만 아니라, 이터러블 객체(Iterable Object)가 존재하는 데, 이터러블 객체를 만들면 for문과 함께 객체를 사용할 수 있다.
다음의 간단한 예제 코드를 살펴보자.
class Counter:
def __init__(self,start,finish):
self.__start = start
self.__finish = finish
def __iter__(self):
return self
def __next__(self):
if self.__start > self.__finish:
raise StopIteration
else:
self.__start +=1
return self.__start - 1
c = Counter(1,20)
for i in c:
print(i)
이터러블한 객체가 되려면 가장 먼저 __iter__() 메소드를 객체 자신을 반환하도록 정의해주어야 한다.
그리고 __next__()를 통해 다음 값을 지정해 줄 수 있다. 만약 다음 값이 없을 경우 StopIteration 예외를 발생 시키면 된다.
제너레이터(Generators)>
이터러블 객체가 객체를 만들어, 이터레이터를 만드는 방법이라면, 제너레이터(Generators)는 함수를 통해 이터레이터를 만드는 방법이다.
다음의 간단한 예제 코드를 살펴보자.
def generator():
yield "1"
yield "2"
yield "3"
for i in generator():
print(i)
위와 같이 함수내에 yield 키워드를 지정해줌으로써 이터레이터로 활용할 수 있다.