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 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1247
» [FAQ] Yield는 무엇인가요? 코난(김대우) 2022.10.18 61
100 python 중복 값 관련 질문 [1] rlagu**** 2022.10.13 79
99 NaT NaN 관련 질문이요 [1] file solkim 2022.07.11 245
98 포스 바코드 리더기 질문 [1] 파이썬초보 2022.03.22 272
97 파이썬 그래프 관련 질문 드립니다. [1] file 바른세상 2022.03.15 193
96 request.cookies.get이 안됩니다.. file 권기원 2022.02.22 146
95 파이썬 정렬 기능 과 시각화 문의 드립니다. [1] 바른세상 2022.02.18 190
94 파이썬 슬라이싱 [2] 반말 2021.03.27 351
93 c# 프로젝트 hhe3522 2018.12.04 2694
92 다음 API 지도 데이터 추출 관련 문의 이대우1234567 2018.11.07 2568
91 SQL 서버와 연결 후, 클라이언트 포트 클리어 방법 암무거나 2018.03.27 3680
90 C#에서 MSSQL에 많은 데이터를 빠르게 넣을 수 있는 방법 코코라니 2018.03.17 5494
89 데이터 싱크 프로그램 제작 질문드립니다. 베로 2017.11.09 4178
88 VS Code 로 C# 개발할때.... 1231234 2017.08.31 4942
87 C++ 오류 베르사유 2017.08.10 4515
86 EntityFramework 트랜잭션 어떻게 되는건지 궁금합니다 능능능 2017.08.09 5170
85 라이브러리 구동 샘플 프로그램 기타치는퐝동 2017.05.26 4285
84 깜빡임 효과 주는 방법 문의 [1] 방자 2017.02.08 6014
83 인터넷 실행 후알유? 2016.12.12 5842
82 for문 사용방법 문의 [2] 방자 2016.10.27 6772





XE Login