반응형
목차
파이썬 yield와 generator의 의미
간단히 말해서 파이썬의 generator란 반복(iterator) 동작을 간단하게 실행시켜주는 방법입니다. generator를 만들때 일반적인 함수를 정의하면서 return 문구를 쓰는 것이 아닌 yield를 사용합니다.
- generator 함수는 최소 하나의 yield 를 포함
- next() 메소드가 자동으로 실행됨
- yield가 실행되면 함수는 중단하고 control이 콜러(caller)에게 넘어감
코드를 통해 직접 설명드리겠습니다.
예제 코드>>
def gen_func():
yield 1
print(gen_func())
결과>>
<generator object gen_func at 0x0000025D61859A10>
위 예제 코드와 같이 gen_func 함수에 yield가 포함되기 때문에 해당 함수는 generator가 됩니다.
파이썬 yield 사용 방법
yield를 사용하는 이유는 return과 같이 모든 결과에 대한 처리를 메모리에 올리지 않고 함수에서 yield를 요청할 때 해당 yield까지만 사용하고 다음 번 yield 나오는 부분은 사용하지 않기 때문에 메모리를 절감 합니다.
아래 예제를 통해 출력하는 방법 2가지에 대해 알아 보겠습니다.
예제 코드- for 문>>
def gen_func(x):
print('입력값')
yield x
print("입력값 + 1")
x += 1
yield x
print("입력값 + 2")
x += 1
yield x
for x in gen_func(1):
print(x)
3,7,11번 라인: 3개의 yield를 만들어 for문이 들어가서 요청할 때마다 하나씩 출력 합니다.
입력값
1
입력값 + 1
2
입력값 + 2
3
예제 코드- next 메소드 사용>>
def gen_func(x):
print('입력값')
yield x
print("입력값 + 1")
x += 1
yield x
print("입력값 + 2")
x += 1
yield x
a_func = gen_func(3)
print(next(a_func))
print(next(a_func))
print(next(a_func))
13번 라인 : generator 함수 gen_func를 다른 함수에 정의
15~17번 라인: next 메소드를 사용해서 yield를 한번씩 출력
결과>>
입력값
3
입력값 + 1
4
입력값 + 2
5
반응형
'파이썬(Python) > 문법' 카테고리의 다른 글
[Python] 멀티프로세스, 동시 작업(Multiprocess, Multitask, 파이썬) #1 (0) | 2022.06.28 |
---|---|
[Python] Try Except Else Finally Raise 구문 사용 방법, 예제 (파이썬) (0) | 2022.06.27 |
[Python] 람다 함수란? 사용하는 목적(Lambda Function, Why) (0) | 2022.06.23 |
[Python] 정규표현식으로 파일(XML, txt, html) 내용 검색(필터)하기 (re, match, compile, finditer) (0) | 2022.06.02 |
[Python] 키보드(keyboard) 이벤트(event) 값 읽기 (2) | 2022.03.25 |