파이썬심화-3 제너레이터
제너레이터
- 이터레이터를 만드는 간단하고 강력한 도구
- 함수 안에서
yield
를 사용하면 그 함수는 제너레이터가 됨 - 모든 제너레이터 객체는 이터레이터임
- 간단하게 이터레이터를 구현할 수 있음
def gen():
yield 0
yield 1
yield "hi"
g = gen()
print(next(g))
print(next(g))
print(next(g))
# print(next(g))
0
1
hi
제너레이터 표현식
def gen():
for i in range(1, 5):
result = i * i
yield result
g = gen()
print(next(g))
print(next(g))
print(next(g))
# 튜플 표현식으로 간단하게 만들 수 있음
g = (i * i for i in range(1, 5))
print(next(g))
print(next(g))
print(next(g))
1
4
9
1
4
9
제너레이터의 쓰임새
- 대량의 데이터를 처리할 때 많이 사용
- 한 줄씩 순서대로 처리하기 때문에 메모리 사용이 적음
# 이터레이터
def it():
print("iterator")
return "done"
it = iter([it() for i in range(3)])
print(next(it))
# 제너레이터
def gen():
print("generator")
return "done"
g = (gen() for i in range(3))
print(next(g))
# 모든 함수를 한꺼번에 실행되는 iterator와 달리 generator는 필요할 때만 실행하는 방식
iterator
iterator
iterator
done
generator
done
댓글남기기