로딩
요청 처리 중입니다...

파이썬 반복문 완벽 가이드 4편 | iterable, iterator, next와 for문의 동작 원리

 파이썬 반복문 완벽 가이드 4편 | iterable, iterator, next와 for문의 동작 원리

iterator는 앞으로만 이동 가능하고 인덱싱이 불가하며 길이를 알 수 없는 특징이 있다. len(it) 호출은 TypeError를 발생시킨다. 여러 개의 Iterator는 독립적으로 동작하며 필요할 때만 값을 생성하는 Lazy Evaluation으로 메모리를 효율적으로 사용한다.

대표적인 Iterator 반환 함수로 map, filter, zip, enumerate이 있다. Generator도 Iterator이며 값을 생성하려면 yield를 사용한다. iter()는 일반적으로 iter(iterable) 형태로 사용되지만 고급 형태인 iter(callable, sentinel)도 있다. 이때 특정 값이 나오면 종료한다. 최종 핵심은 Iterator가 현재 위치를 기억하며 데이터를 하나씩 반환하는 반복 전용 객체라는 점이다. for문은 Iterable을 직접 순회하지 않고, Iterable이 제공하는 Iterator를 통해 next()로 값을 꺼내며 반복을 수행한다. 핵심 구조는 iter() → next() → StopIteration으로 이어진다. Iterator를 이해하면 for, range, map, filter, zip, enumerate, generator의 동작 원리를 한 번에 이해할 수 있다.

for문 내부의 원리는 반복의 본질을 드러낸다. 핵심 문장은 for문이 직접 반복하지 않고, Iterator를 통해 값을 하나씩 꺼내며 반복을 수행한다는 것과 같다. 많은 사람이 “for문이 반복한다”고 생각하지만 실제로는 그렇지 않다. for문은 반복을 수행하는 객체인 Iterator를 이용한다.

iterable과 iterator의 관계도 중요한 포인트다. Iterable은 Iterator를 만들어낼 수 있는 객체로 list, tuple, str, dict, set, range 등이다. Iterator는 실제로 값을 하나씩 꺼내주는 객체로, 관계는 iterable → iter() → iterator → next() → 값 반환으로 요약된다. 반복의 최소 단위는 next()이다.

2-1 코드 맥락에서 정리한 내용은 아래 링크에 모아두었으니 관심 있는 부분을 확인하면 된다.

# for문원리 # 파이썬심화 # 파이썬반복문 # 파이썬내부동작 # 파이썬기초 # 파이썬 # 코딩독학 # 개발자 # 개발공부 # Python심화 # Python # next # iterator # iterable # 프로그래밍