Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

제너레이터 Generator / 제네레이터 표현식 Generator Expression 본문

프로그래밍 언어/파이썬

제너레이터 Generator / 제네레이터 표현식 Generator Expression

야식은진리다 2020. 9. 6. 03:25

제네레이터

제네레이터는 이터레이터를 만드는 도구이다. 제너레이터는 일반함수와 많이 닮았지만 데이터를 반환할때 return 대신 yield를 사용한다. 함수는 yield를 만나면 값을 반환하고 그 자리에서 실행을 멈춘다. 그리고 다시 next메서드가 호출되면 중단된 지점 부터 다시 실행한다.

 

def Generator(data):
    for index in range(0, len(data)):
        yield data[index] + '!'

for char in Generator('Hello'):
    print(char)

temp = Generator('World')
print(temp.__next__())
print(temp.__next__())
print(temp.__next__())
print(temp.__next__())
print(temp.__next__())
print(temp.__next__()) # 예외 발생

 

제네레이터 표현식

() 를 사용해서 comprehension을 만들면 Generator comprehension이 만들어진다(Generator expression으로도 불린다). 이를 통해서 제너레이터를 더 간단히 생성할 수 있다. 앞선 제너레이터를 제너레이터 표현식을 사용하면 다음과 같다.

 

for i in (n + '!' for n in "HelloWorld"):
    print(i)

 

제너레이터 표현식을 사용할때 ()로 감싸 줘야하지만 sum(n * n for n in range(10)) 처럼 제너레이터 표현식이 함수의 단일 인자라면 ()를 생략할수 있다.