마찬가지로 오른쪽에 있는 파라미터의 순서를 그대로 유지하고 형식 문자열의 순서를 바꿔도 같은 오류가 발생한다.
reordered_string = '%.2f = %-10s' % (key, value) >>> Traceback ... TypeError: must be real number, not str
이런 오류를 피하려면 % 연산자의 좌우가 서로 잘 맞는지 계속 검사해야 한다. 코드를 변경할 때마다 사람이 직접 검사해야 하므로 검사 과정에서 실수하기 쉽다.
C 스타일 형식화 식의 두 번째 문제점은 형식화를 하기 전에 값을 살짝 변경해야 한다면(이런 경우가 꽤 많이 있다) 식을 읽기가 매우 어려워진다는 점이다. 다음 예제를 보면 부엌 찬장의 내용물을 변경하지 않고 열거했다.6
pantry = [ ('아보카도', 1.25), ('바나나', 2.5), ('체리', 15), ] for i, (item, count) in enumerate(pantry): print('#%d: %-10s = %.2f' % (i, item, count)) >>> #0: 아보카도 = 1.25 #1: 바나나 = 2.50 #2: 체리 = 15.00
6 역주 결과로부터 형식화 문자열에서 한글(실제로는 유니코드 한중일 문자 모두) 문자열의 너비를 지정하는 경우 (겉으로 보기에) 제대로 작동하지 않을 수도 있음을 알 수 있다. https://stackoverflow.com/questions/4622357/how-to-control-padding-of-unicode-string-containing-east-asia-characters(단축 URL: https://bit.ly/30SiKbn)를 보라.