나의 지식 보관소
제너레이터 Generator / 제네레이터 표현식 Generator Expression 본문
제네레이터
제네레이터는 이터레이터를 만드는 도구이다. 제너레이터는 일반함수와 많이 닮았지만 데이터를 반환할때 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)) 처럼 제너레이터 표현식이 함수의 단일 인자라면 ()를 생략할수 있다.
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
파이썬 내장 함수 Enumerate, Zip (1) | 2021.06.06 |
---|---|
정적 메서드와 클래스 메서드 ( @staticmethod & @classmethod ) (0) | 2020.09.07 |
리스트 컴프리헨션 (List Comprehension) (0) | 2020.09.05 |
이터레이터 Iterator (0) | 2020.09.04 |
예외 처리 (0) | 2020.07.01 |