콘텐츠로 이동

Default Iterators and Operators

2.8 기본 이터레이터와 연산자

list, dict, file 등 기본 이터레이터와 연산자를 제공하는 타입에 대해서는 기본 이터레이터와 연산자를 사용하세요.

2.8.1 정의

dict와 list같은 컨테이너 타입은 기본 이터레이터와 멤버십 검사 연산자(in, not in)를 정의합니다.

2.8.2 장점

기본 이터레이터와 연산자는 간단하고 효율적입니다. 이는 별도의 메소드 호출 없이 연산을 직접적으로 표현합니다. 기본 연산자를 사용하는 함수는 데이터 타입에 의존하지 않는 제네릭 함수가 됩니다. 해당 연산을 제공하는 모든 타입에 대해 사용될 수 있습니다.

2.8.3 단점

변수에 명시적인 타입 표기(annotation)가 없다면, 이러한 메소드를 사용하는 위치에서는 그 메소드를 제공하는 객체가 어떤 타입인지 알 수 없습니다. 이는 강점이기도 합니다.

2.8.4 권장 사항

list, dict, file 등 기본 이터레이터와 연산자를 제공하는 타입에 대해서는 기본 이터레이터와 연산자를 사용하세요. 몇몇 내장 타입들(built-in types)도 이터레이터 메소드를 정의합니다. 순회 중에 컨테이너의 요소를 변경하면 안된다는 점을 제외하면, 리스트를 반환하는 메소드보다 이러한 이터레이터 메소드가 더 선호됩니다.

# Yes(권장):  
      for key in adict: ...
      if obj in alist: ...
      for line in afile: ...
      for k, v in adict.items(): ...
# No(주의):
      for key in adict.keys(): ...
      for line in afile.readlines(): ...