Python Tip을 FAQ로 정리.

 

Python의 yield 구문은 무엇인가요?

python - What does the "yield" keyword do? - Stack Overflow

stackoverflow에서 12k이상의 voting이 있는 내용.

 

간략히, 큰 collection을 메모리에 로드하지 않고, generator로 iteration된 개별 항목을 처리 가능한 python의 구문.

 

iterables

list를 생성하면, item을 하나씩 읽기 가능. item을 하나씩 읽는 것을 iteration이라보 명명.

>>> mylist = [1, 2, 3]
>>> for i in mylist:
...    print(i)
1
2
3

 

 

Generators

generator는 iterator이고, 오직 하나씩만 iterate 할 수 있다. 모든 값들을 메모리에 로드하지 않고 값을 그때그때 generate 함.

>>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator:
...    print(i)
0
1
4

 

Yield

yield는 return처럼 사용되지만, 차이점은 generator만 리턴한다.

>>> def create_generator():
...    mylist = range(3)
...    for i in mylist:
...        yield i*i
...
>>> mygenerator = create_generator() # create a generator
>>> print(mygenerator) # mygenerator is an object!
<generator object create_generator at 0xb7555c34>
>>> for i in mygenerator:
...     print(i)
0
1
4

 

일반적인 함수는 실행이 종료되면 return 후 종료되며 메모리에서 제거된다.

하지만, generator 함수가 실행될 때, yield가 실행되면 함수는 잠시 대기하고 return값만 호출한 쪽으로 전달한다. 이때, 함수는 메모리에 그대로 남고 종료되지 않는다.

 

도움 되시길 바랍니다.

 

참고링크: 6. Expressions — Python 3.10.8 documentation

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36471
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 19430
106 파이썬 개발환경 구성 시 오류 [2] file 기타치는퐝동 2023.12.02 323
105 안녕하세요 Batch file 관련 질문 입니다. 94B 2023.10.09 206
104 selenium 관련 web push notification 제어 질문 file ㅋㅋㅋㅋ1302 2023.09.25 306
103 키가 다른 딕셔너리를 데이터프레임으로 전환 [5] vitokim 2023.07.13 362
102 json을 dataframe로 전환하는 것에 대해 조언 부탁드립니다. [4] file vitokim 2023.07.13 164
» [FAQ] Yield는 무엇인가요? 코난(김대우) 2022.10.18 117
100 python 중복 값 관련 질문 [1] rlagu**** 2022.10.13 169
99 NaT NaN 관련 질문이요 [1] file solkim 2022.07.11 461
98 포스 바코드 리더기 질문 [1] 파이썬초보 2022.03.22 468
97 파이썬 그래프 관련 질문 드립니다. [1] file 바른세상 2022.03.15 273
96 request.cookies.get이 안됩니다.. file 권기원 2022.02.22 186
95 파이썬 정렬 기능 과 시각화 문의 드립니다. [1] 바른세상 2022.02.18 273
94 파이썬 슬라이싱 [2] 반말 2021.03.27 434
93 c# 프로젝트 hhe3522 2018.12.04 2754
92 다음 API 지도 데이터 추출 관련 문의 이대우1234567 2018.11.07 2612
91 SQL 서버와 연결 후, 클라이언트 포트 클리어 방법 암무거나 2018.03.27 3734
90 C#에서 MSSQL에 많은 데이터를 빠르게 넣을 수 있는 방법 코코라니 2018.03.17 5592
89 데이터 싱크 프로그램 제작 질문드립니다. 베로 2017.11.09 4221
88 VS Code 로 C# 개발할때.... 1231234 2017.08.31 5002
87 C++ 오류 베르사유 2017.08.10 4560





XE Login