더북(TheBook)

별표 식으로 언패킹하면 이터레이터가 내보내는 내용 중에 첫 번째(헤더)와 나머지를 쉽게 나눠서 처리할 수 있다. 이 방식이 더 깔끔하다..

it = generate_csv()
header, *rows = it
print('CSV 헤더:', header)
print('행 수:', len(rows))

>>>
CSV 헤더: ('날짜', '제조사', '모델', '연식', '가격')
행 수: 200

하지만 별표 식은 항상 리스트를 만들어내기 때문에 이터레이터를 별표 식으로 언패킹하면 컴퓨터 메모리를 모두 다 사용해서 프로그램이 멈출 수 있다. 따라서 결과 데이터가 모두 메모리에 들어갈 수 있다고 확신할 때만 나머지를 모두 잡아내는 언패킹을 사용해야 한다(Better way 31: ‘인자에 대해 이터레이션할 때는 방어적이 돼라’ 참고).

기억해야 할 내용

• 언패킹 대입에 별표 식을 사용하면 언패킹 패턴에서 대입되지 않는 모든 부분을 리스트에 잡아낼 수 있다.

• 별표 식은 언패킹 패턴의 어떤 위치에든 놓을 수 있다. 별표 식에 대입된 결과는 항상 리스트가 되며, 이 리스트에는 별표 식이 받은 값이 0개 또는 그 이상 들어간다.

• 리스트를 서로 겹치지 않게 여러 조각으로 나눌 경우, 슬라이싱과 인덱싱을 사용하기보다는 나머지를 모두 잡아내는 언패킹을 사용해야 실수할 여지가 훨씬 줄어든다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.