▶️15

for 루프의 비밀: __iter__와 __next__

100만 행 CSV를 메모리 초과 없이 - 제너레이터

학습 목표

for 루프의 내부 동작 원리를 이해한다 __iter__와 __next__ 메서드를 파악한다 StopIteration 예외의 역할을 안다

for 루프의 비밀: __iter__와 __next__
YouTube에서 보기

for 루프의 비밀

"for문이 어떻게 리스트를 순회하는지 생각해 본 적 있어요?"

우리가 쓰는 코드

에디터 로딩 중...

Python이 실제로 실행하는 코드

에디터 로딩 중...

이터레이터 프로토콜

메서드역할반환값
__iter__()이터레이터 객체 반환self (보통)
__next__()다음 요소 반환값 또는 StopIteration

이터러블 vs 이터레이터

에디터 로딩 중...

파일 객체는 이미 이터레이터!

에디터 로딩 중...

핵심 인사이트

"이터레이터는 게으른(lazy) 순회자입니다. 필요할 때만 다음 값을 계산합니다."

이 "게으름"이 바로 메모리 효율의 핵심이다!

핵심 포인트
  • for 루프 = iter() + while + next() + StopIteration
  • 이터러블: __iter__() 있음 → iter()로 이터레이터 획득
  • 이터레이터: __iter__() + __next__() 있음
  • 파일 객체는 자체가 이터레이터 (메모리 효율적)