본문 바로가기
Python

[Python] 오늘도 정리 - yield란?

by Lee David 2022. 11. 11.
반응형
Yield?

일단 yield가 함수 안에서 return 대신 사용한다고 간략하게 설명이 되어 있습니다.

하지만 return 대신 yield가 사용되게 되면 generator라는 개념으로 함수 단위를 호출하게 됩니다.

a = [1,2,3,4,5]
b = [10,20,30,40,50]

def yieldTest():
    for x in a:
        if x == 3:
            yield x
def returnTest():
    for x in b:
        if x == 30:
            return x

print(yieldTest()) # <generator object yieldTest at 0x31497f0>
print(returnTest()) # 30

이와같이 동일한 조건에서도 yield가 선언되어 있는 함수는 generator를 생성합니다.

왜 generator를 사용할까요?

generator를 사용하게 되면 최대 이점으로 메모리 사용량을 줄일 수 있습니다.

이유는 yield가 실행되는 지점에서 next()라는 내부 함수가 실행되면서 그 다음 값을 메모리에 올리게 됩니다.

이때 이전 데이터에 대하여 저장하지 않으면 그대로 날아가게되니 주의해야 합니다.

그렇다 하더라도 순간적으로 저장하는 데이터에 대하여 변수나 자료구조에 담아두지 않고 순간적인 메모리 사용만 이용할 때에 자주 사용되는 개념이라고 합니다.

a = [1,2,3,4,5]

# yield 호출하는 방법
def yieldTest():
    for x in a:
        yield x

for y in yieldTest():
    print(y) # 1 2 3 4 5
반응형