파이썬에서 Generator란?
글 작성자: _rian
파이썬을 그냥 아무생각하지 않고 지내다가 다른 사람들의 코드를 보면 같은 언어가 맞자 싶을 때가 종종 있는 것 같습니다 (ㅎㅎ??)
최근에는 그것이 바로 yield
를 만났을 때였는데, Generator라는 친숙하면서도 생소한 개념을 정리하고자 이렇게 글을 남깁니다!
Generator란?
Generator에 대해서 이해하기 전에 먼저 iterator부터 알고 갑시다!
Iterator란?
반복 가능한 객체, 즉 반복문을 활용하여 데이터를 순회하면서 처리할 수 있는 객체를 의미합니다. 아래 예시 코드를 한번 살펴봅시다.
>>> a_tuple = (1, 2, 3)
>>> b_iterator = iter(a_tuple)
>>> print(b_iterator.__next__())
1
>>> print(b_iterator.__next__())
2
>>> print(b_iterator.__next__())
3
>>> print(b_iterator.__next__())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
- 첫 번째 줄에서 튜플을 선언하고, 두 번째 라인에서 튜플을 iter 객체로 변환합니다.
- 아래 print 문에서 하나씩 내부 데이터를 순회합니다.
다시 돌아와서, Generator란?
Iterator를 생성해주는 함수를 의미합니다. 함수 안에 yield
키워드를 사용해서 만들 수 있습니다.
여기서 포인트는 모든 값을 포함하여 반환하는 대신 호출할 때 마다 한개의 값을 리턴한다는 것입니다.
그런 의미에서 아주 작은 메모리로도 효율적으로 대용량의 반복 가능한 구조로 순회할 수 있다는 장점이 있습니다.
무한한 순서가 있는 객체를 모델링할 수 있다는 점도 매력적이죠!
코드로 한번 작성해봅시다!
>>> def generator():
... yield 1
... yield 2
... yield 3
...
>>> gen = generator()
>>> type(gen)
<type 'generator'>
>>> next(gen)
1
>>> next(gen)
2
>>> next(gen)
3
>>> next(gen)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
yield
키워드를 사용해 generator를 만들 수 있습니다.yield
가 호출되면 임시적으로 return이 호출되며, 한번 더 실행되면 실행되었던yield
의 다음 코드가 실행됩니다.
'Computer Engineering > Python' 카테고리의 다른 글
[Pythonic한 코드 작성하기] 파이썬의 자식 프로세스 관리 모듈, subprocess (0) | 2021.04.21 |
---|---|
[Pythonic한 코드 작성하기] Python의 가변 인수(*args)와 키워드 인수에 대해 파헤쳐보자 (0) | 2021.02.25 |
[Pythonic한 코드 작성하기] 리스트 컴프리헨션 (list comprehension) (0) | 2021.02.03 |
파이썬에서 Generator란? (feat. yield 함수) (0) | 2021.01.09 |
파이썬에서 노션 API를 사용하여 뉴스 크롤링한 정보를 노션에 업로드하기 (notion-py) (0) | 2020.12.27 |
댓글
이 글 공유하기
다른 글
-
[Pythonic한 코드 작성하기] Python의 가변 인수(*args)와 키워드 인수에 대해 파헤쳐보자
[Pythonic한 코드 작성하기] Python의 가변 인수(*args)와 키워드 인수에 대해 파헤쳐보자
2021.02.25 -
[Pythonic한 코드 작성하기] 리스트 컴프리헨션 (list comprehension)
[Pythonic한 코드 작성하기] 리스트 컴프리헨션 (list comprehension)
2021.02.03 -
파이썬에서 Generator란? (feat. yield 함수)
파이썬에서 Generator란? (feat. yield 함수)
2021.01.09 -
파이썬에서 노션 API를 사용하여 뉴스 크롤링한 정보를 노션에 업로드하기 (notion-py)
파이썬에서 노션 API를 사용하여 뉴스 크롤링한 정보를 노션에 업로드하기 (notion-py)
2020.12.27