Python TypeError: Nicht leere Formatzeichenfolge, die an das Objekt .__ format__ übergeben wird

Ich habe kürzlich diese TypeError-Ausnahme entdeckt, die sich nur schwer debuggen lässt. Ich habe es schließlich auf diesen kleinen Testfall reduziert:

>>> "{:20}".format(b"hi")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__

Das ist für mich sowieso nicht selbstverständlich. Die Problemumgehung für meinen Code bestand darin, die Byte-Zeichenfolge in Unicode zu dekodieren:

 >>> "{:20}".format(b"hi".decode("ascii"))
 'hi                  '

Was bedeutet diese Ausnahme? Gibt es eine Möglichkeit, dies deutlicher zu machen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage