Python 제네레이터(Generator)란?

Generator란 무엇인가? 어려운표현은 생략하고 간략하게 정리해보았습니다.

직역하면 ‘발전기’이지만 파이썬에서는 무엇인가 계속 만들어내는 Function 을 의미합니다.

‘생성기’라는 표현이 맞겠죠. 적용하는 방법은…

펑션(Function)에 return 대신 yield 를 사용하면 됩니다.

그렇게하면 그 펑션에 명시된 기능을 끝날때 까지 계속 돌려주는것이죠.(계속 생산한다는의미에서 제네레이터)

예제로 알아보겠습니다.

def gencubes(n):
for num in range(n):
yield num**3

간단한 제네레이터로 n 으로 숫자를 받아 0부터 n 까지 생성하고 각 숫자에 3제곱 해줍니다.

for x in gencubes(10):
print x

그 다음 n 에 10을 넣어 0 ~ 10 까지 generator를 사용해 결과를 출력합니다.

결과

123.PNG

이해를 돕기위해 이것을 일반펑션(Function)에서 구현한다고 하면…

123.PNG

리스트(List)를 생성해서 결과를 저장한후 출력하면 동일한 결과를 얻을 수 있습니다.

하지만, 값이 커질경우 이렇게하면 메모리에 저장하는 값이 많아져서 에러가 발생하거나 느려질수있기때문에 제네레이터를 사용합니다. (두번째 이유는 파이썬은 간결함이 생명입니다.)

다음글에서 피보나치 수열을 제네레이터에 적용해보겠습니다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s