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
Comment 0
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] ![]() | solkim | 2022.07.11 | 245 |
98 | 포스 바코드 리더기 질문 [1] | 파이썬초보 | 2022.03.22 | 272 |
97 |
파이썬 그래프 관련 질문 드립니다.
[1] ![]() | 바른세상 | 2022.03.15 | 193 |
96 |
request.cookies.get이 안됩니다..
![]() | 권기원 | 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 |