더북(TheBook)

아쉽지만 새로운 format 메서드도 앞에서 설명한 두 번째 문제점은 해결하지 못한다. 따라서 형식화를 하기 전에 값을 조금 변경해야 하는 경우에는 코드 읽기가 어려워진다. C 스타일 형식화와 새로운 형식화는 가독성 면에서 거의 차이가 없으며, 둘 다 읽기에 좋지 않다.

for i, (item, count) in enumerate(pantry):
    old_style = '#%d: %-10s = %d' % (
        i + 1,
        item.title(),
        round(count))

    new_style = '#{}: {:<10s} = {}'.format(
        i + 1,
        item.title(),
        round(count))

    assert old_style == new_style

str.format과 함께 사용하는 형식 지정자에는 딕셔너리 키나 리스트 인덱스를 조합해 위치 지정자에 사용하거나 값을 유니코드나 repr 문자열로 변환하는 등의 고급 옵션이 있다.

formatted = '첫 번째 글자는 {menu[oyster][0]!r}'.format(menu=menu)
print(formatted)

>>>
첫 번째 글자는 't'
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.