728x90
반응형
- 이터러블 객체
- 순서가 있는 자료형
- 문자열, 리스트, 튜플, 딕셔너리, range 객체
- __iter__(), __next__() 메소드가 정의되어있다.
- 제너레이터 함수
- 이터레이터를 만드는 함수이다.
- yield 사용한다
- 제너레이터 표현식을 사용해서 만들 수 있다.
- 메모리 사용이 효율적이다.
- List 같은 경우 결과 값을 메모리에 저장한다.
- 제너레이터의 경우 식만 저장할뿐 값을 저장 하지 않는다. __next__ 함수가 호출 될 때에 결과값을 만든다
# yield 사용
def gen_func(*args):
for arg in args:
yield arg
month = gen_func('1월', '2월', '3월', '4월')
print(month.__next__()) # 1월
print(month.__next__()) # 2월
print(month.__next__()) # 3월
print(month.__next__()) # 4월
# 제너레이터 표현식 -> () 를 사용한다.
double_generator = (i * 2 for i in range(1,10))
for i in double_generator:
print(i)
# 메모리 차이
import sys
list_data = [i * 3 for i in range(1, 10000+1)]
generator_data = (i * 3 for i in range(1, 10000+1))
print(sys.getsizeof(list_data)) # 85176
print(sys.getsizeof(generator_data)) # 208
728x90
반응형
'Development > Python' 카테고리의 다른 글
파이썬 가상 환경 실행 및 VS Code 설정 (0) | 2023.03.27 |
---|---|
파이썬 문법 : 데코레이터 함수 (0) | 2023.03.13 |
파이썬 문법 : 내부 함수, 클로저 (0) | 2023.03.06 |
파이썬 문법 : method (0) | 2023.03.03 |
파이썬 문법 : class 속성들 (0) | 2023.03.02 |