파이썬 yield, 제너레이터(generator)

2023. 7. 21. 11:22·Python
728x90

yield

  • 호출한쪽으로 프로그램 제어를 넘겨주는 키워드
  • 함수 내에서 사용하며, generator객체를 생성

 

return vs yield

>>> print(return_abc())
['A', 'B', 'C']
>>> print(yield_abc())
<generator object yield_abc at 0x7f4ed03e6040>

 

알파벳 하나를 만드는데 1초가 걸리는 함수

import time

def return_abc():
  alphabets = []
  for ch in "ABC":
    time.sleep(1)
    alphabets.append(ch)
  return alphabets
  

def yield_abc():
  for ch in "ABC":
    time.sleep(1)
    yield ch

return

for ch in return_abc():
  print(ch)
  
# 3초 경과
A
B
C

yield

for ch in yield_abc():
  print(ch)
  
# 1초 경과
A
# 1초 경과
B
# 1초 경과
C
만약에 세개의 알파벳이 아닌 백개, 천개, 만개의 알페벳을 제공해야하는 경우
return 방식에서는 첫번째 결과값을 얻는데 백초, 천초, 만초가 걸리는 반면에, yield 방식에서는 항상 일초가 걸림
즉, 제너레이터를 통해서는 결과값을 나누어서 얻을 수 있기 때문에 성능 측면에서 큰 이점이 있음

 

제너레이터(generator)

  • Iterator를 생성해주는 함수를 의미
  • 여러 개의 데이터를 미리 만들어 놓지 않고 필요할 때마다 즉석해서 하나씩 만들어낼 수 있는 객체
  • 모든 값을 포함하여 변환하는 대신 호출할 때마다 한 개의 값을 리턴

 

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'Python' 카테고리의 다른 글
  • 파이썬 내장함수 bit_length, 이진수 길이, bit_count, 이진수 1의 개수
  • 파이썬 내장함수 capitalize, title, 첫글자 대문자 변환
  • 파이썬 자료구조 set
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DP
    최대공약수
    조합
    Algorithm
    그리디
    DFS
    프로그래머스
    LIS
    다익스트라
    구현
    플로이드워셜
    알고리즘
    정렬
    덱
    최단거리
    구간합
    힙
    이분탐색
    트리
    재귀
    동적계획법
    BFS
    최소신장트리
    백준
    월간코드챌린지
    자료구조
    그래프
    스택
    파이썬
    큐
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
파이썬 yield, 제너레이터(generator)
상단으로

티스토리툴바