노트 :

제너레이터(Generator) 본문

Python

제너레이터(Generator)

IT_달토끼 2023. 2. 23. 21:36

 

generator

A function which returns a generator iterator. 
It looks like a normal function except that it contains yield expressions for producing a series of values usable in a for-loop or that can be retrieved one at a time with the next() function.

 

generator iterator

An object created by a generator function.
Each yield temporarily suspends processing, remembering the location execution state (including local variables and pending try-statements). 
When the generator iterator resumes, it picks up where it left off (in contrast to functions which start fresh on every invocation).

 

 

루프의 반복 동작을 제어할 수 있는 iterator 타입.

 

함수에서 사용하게 되면, 중간 값을 반환하여 사용할 수 있다.

 

기존의 함수는 return 을 만나게 되면 값을 리턴하고 모든 함수의 동작을 종료하게 된다.

 

그러나 generator를 사용한 함수에서는 yield를 만나면 해당 구문까지 실행 중이던 중간 값을 내보낸 다음 함수의 종료 없이 계속해서 끝에 도달할 때까지 실행된다. 

 

 

예제.

def num_generator():
    yield 0
    yield 1
    yield 2
 
for i in num_generator():
    print(i)

해당 함수를 실행하면 다음 값을 얻을 수 있다.

0
1
2

num_generator()를 변수 g에 대입하여, 타입을 출력해보면 generator 객체라고 나온다.

g = num_generator()

print(type(g))
<class 'generator'>

 

generator 객체는 iterator 타입이므로, iterator의 끝까지 도달하면 StopIteration 에러를 반환한다.

 

num_generator() 함수를 변수 g에 저장하여 next() 함수로 확인해 보자.

 

StopIteration 에러

 

 

 

sorce: https://docs.python.org/3/glossary.html#term-generator

 

Glossary

>>>, The default Python prompt of the interactive shell. Often seen for code examples which can be executed interactively in the interpreter.,,..., Can refer to:- The default Python prompt of the i...

docs.python.org

 

 

'Python' 카테고리의 다른 글

Matplotlib  (0) 2023.03.27
주소록 프로젝트  (0) 2023.03.25
타입 힌트(Type Hint)  (0) 2023.02.23
Streamlit으로 간단한 웹페이지 만들기  (0) 2023.01.28
Streamlit 설치  (0) 2023.01.28