코딩테스트/Python 개념

[Python] yield 제너레이터 (함수 return 값 여러번에 나눠서 할때 )

박소민 2023. 3. 19. 12:30
yield
 

파이썬의 yield 키워드와 제너레이터(generator)

Engineering Blog by Dale Seo

www.daleseo.com

 

def yield_abc():
  yield "A"
  yield "B"
  yield "C"
for ch in yield_abc():
  print(ch) 

'''
A
B
C
'''

 

 

  • return 키워드를 사용할 때는 모든 결과 값을 메모리에 올려놓는다 
  • 반면, yield 키워드를 사용할 때는 결과 값을 하나씩 메모리에 올려놓는다.
    • -> 결과값을 나누어서 얻을 수 있기 때문에 성능 측면에서 큰 이점
  • for 루프로 돌려보면 1초 후에 A를 출력되고, 또 1초 후에 B를 출력되고, 또 1초 후에 C가 출력
import time

def yield_abc():
  for ch in "ABC":
    time.sleep(1)
    yield ch
# 1초 경과
A
# 1초 경과
B
# 1초 경과
C

 

yield from
  • yield from를 사용하면 리스트를 바로 제너레이터로 변환
def yield_abc():
  for ch in ["A", "B", "C"]:
    yield ch
  • 위 코드를 아래 코드로 표현 가능
def yield_abc():
  yield from ["A", "B", "C"]

 

 

'코딩테스트 > Python 개념' 카테고리의 다른 글

[Python] 리스트 값 한번에 출력하기  (0) 2023.03.25
[Python] 일급 객체  (0) 2023.03.19
[Python] 튜플(tuple)  (0) 2023.03.05
[Python] 입력 주의사항  (0) 2023.03.03
[Python] 약수, 제곱근 개념  (0) 2023.02.25