Sequence가 반복 가능한 이유 : iter( ) 함수

매일 공부(ML)·2023년 3월 7일
0

Fluent Python

목록 보기
92/130

제어흐름

반복형, 반복자,제너레이터

데이터를 처리할 때 반복은 기본이고, 메모리에 들어가지 않는 데이터셋을 검색할 때는 항목들을 느긋하게 가져와야 하고, 한 번에 하나씩 그리고 필요할 때 가져와야 하고 이것을 하는 것이 반복자 패턴입니다.

Sequence가 반복 가능한 이유 : iter( ) 함수

iter() 내장함수

  • 객체가 iter() 메서드를 구현하는지 확인하고, 이 메서드를 호출해서 반복지를 가져온다.

  • iter() 메서드가 구현되어 있지 않지만 getitem()이 구현되어 있다면, 파이썬은 인덱스 0에서 시작해서 항목을 순서대로 가져오는 반복지를 생성한다.

  • 이 과정이 모두 실패하면 TypeError가 발생한다.


class Foo:
	def __iter__(self):
    	pass
        
from collections import abc
issubclass(Foo, abc.Iterable)

객체를 반복하기 전에 그 객체가 반복형인지 명시적으로 검사하는 것은 필요하지 않다. 반복할 수 없는 객체를 반복하려고 시도하면 파이썬이 ‘TypeError: 'c' object is not iterable’ 이라는 명료한 메시지를 답은 예외를 발생시키기 때문이다.

예외를발생시키는것보다깔끔하게 처리할수 있다면 try/except 블록으로 처리하는 것이 좋다. 나중에 반복하기 위해 객체에 저장해두는 경우에는 미리 명시적으로 검사하는 것도 좋다.

에러는 가능한 한 빨리 잡는 것이 좋기 때문이다.
다음 절에서는 반복형과 반복자의 관계를 명시하는 방법을 알아본다.

profile
성장을 도울 아카이빙 블로그

0개의 댓글