728x90
반응형
<제너레이터(Generator)>
📍이터레이터는 class 기반, 제너레이터는 함수 기반
📍함수를 이용해서 이터레이터(반복)의 기능을 구현
📍이터레이터와 동일하게 호출 시점에만 메모리를 사용하고 사용이 끝나면 소멸된다.
📍반환할 때 사용하는 명령어는 return이 아닌, yield를 사용한다.
📍이터레이터와 동일하게 전체 또는 next() 한건씩 출력 가능하다.
제너레이터 기본 문법
def simple_generator() :
### 첫번째 반환할 값
yield 1
### 두번째 반환할 값
yield 2
### 세번째 반환할 값
yield 3
제너레이터 전체 출력하기
- 제너레이터에서는 수를 객체러 인지하고 사용한다.
- 함수를 생성한다는 의미 또는 제너레이터 객체를 생성한다는 의미를 사용한다.
for v in simple_generator() :
print(v)
1
2
3
1부터 5까지의 숫자를 생성해서 반환하는 제너레이터 만들기
def number_generator() :
for i in range(1, 6, 1) :
yield i
전체 출력하기
- 함수 객체 생성하기
gen = number_generator()
for num in gen :
print(num)
1
2
3
4
5
한건씩 출력하기
### - 함수 객체 생성하기
gen = number_generator()
try:
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
except:
pass
1
2
3
4
5
※ try / except 가 없다면 오류 발생
파일 한줄씩 읽어서 반환하는 제너레이터 만들기
read_lines 함수 생성
- 파일처리 시 이터레이터와 다르게, with문을 사용해도 된다.
def read_lines(file_path) :
with open(file_path, "r", encoding="utf-8") as file :
for line in file :
yield line.strip()
제너레이터 함수 생성하기
gen = read_lines("./04_example.txt")
for line in gen :
print(line)
- 메모장 내용과 주피터 노트북 실행 결과
가가가
나나나
다다다
라라라
728x90
반응형
'Digital Boot > Python' 카테고리의 다른 글
[Python] 파이썬 알고리즘 프로그램 실습 (0) | 2023.11.17 |
---|---|
[Python] 파이썬 정규표현식(Regular_Expression) (0) | 2023.11.16 |
[Python] 파이썬 이터레이터(Iterator) (0) | 2023.11.16 |
[Python] 파이썬 데코레이터(Decorator) (2) | 2023.11.14 |
[Python] 파이썬 매개변수 (1) | 2023.11.14 |