더북(TheBook)
for rank, (name, calories) in enumerate(snacks, 1):
    print(f'#{rank}: {name} 은 {calories} 칼로리입니다.')

>>>
#1: 베이컨 은 350 칼로리입니다.
#2: 도넛 은 240 칼로리입니다.
#3: 머핀 은 190 칼로리입니다.

이런 식의 루프가 필요할 때는 이 방법이 파이썬다운 방식이다. 코드가 더 짧고 이해하기도 쉽다. 일반적으로는 인덱스를 사용해 무언가에 접근할 필요가 전혀 없다.

파이썬은 list 구조(Better way 13: ‘슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라’ 참고), 함수 인자(Better way 22: ‘변수 위치 인자를 사용해 시각적인 잡음을 줄여라’ 참고), 키워드 인자(Better way 23: ‘키워드 인자로 선택적인 기능을 제공하라’ 참고), 다중 반환 값(Better way 19: ‘함수가 여러 값을 반환하는 경우 절대로 네 값 이상을 언패킹하지 말라’ 참고) 등에 대한 언패킹 기능도 제공한다.

언패킹을 현명하게 사용하면 가능한 한 인덱스 사용을 피할 수 있고, 더 명확하고 파이썬다운 코드를 만들 수 있다.

기억해야 할 내용

• 파이썬은 한 문장 안에서 여러 값을 대입할 수 있는 언패킹이라는 특별한 문법을 제공한다.

• 파이썬 언패킹은 일반화돼 있으므로 모든 이터러블에 적용할 수 있다. 그리고 이터러블이 여러 계층으로 내포된 경우에도 언패킹을 적용할 수 있다.

• 인덱스를 사용해 시퀀스 내부에 접근하는 대신 언패킹을 사용해 시각적인 잡음을 줄이고 코드를 더 명확하게 만들라.

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