1.8 zip(strict=True)과 itertools.zip_longest( )
앞 절에서 zip() 함수로 가독성을 향상시키는 방법을 알아보았습니다. 하지만 앞에서는 그 작업에서 발생할 수 있는 잠재적인 문제를 다루지 않았습니다. zip()으로 묶인 반복 가능 객체들의 길이가 서로 다를 수 있고, 이럴 경우 zip()은 더 긴 반복 가능 객체의 남은 항목들을 아무런 징조도 없이 조용히 무시해 버립니다.
미국 해양대기청이 감시하는 기상 관측소의 이름, 위도, 경도, 고도에 대한 정보가 담긴 데이터 파일이 여러 개 있다고 가정해 보겠습니다. 이때 이 파일들을 생성하는 과정이 데이터의 정확한 동기화를 보장하지 못할 수 있기 때문에 데이터의 배열이 취약하다는 것을 쉽게 알 수 있습니다. 이와 같이 생성되는 데이터에는 우리가 어찌할 수 없는 결함이 존재하곤 합니다.
zip()의 좋은 활용 예를 보여 주기 위해 작성했던 코드는 원본 데이터가 가지는 형식상의 일부 결함을 해결하는 좋은 방법이기도 합니다. 이 방식은 각 기상 관측소의 모든 속성을 namedtuple이라는 동일한 객체6에 담았습니다.
그러나 zip()의 가장 간단한 형태를 사용하는 것은 앞에서 보았던 해결책처럼 오류가 있음에도 감추는 것에 불과할 수 있습니다.