[Python-de] % Formatierung vs mystr.format()

Stefan Schwarzer sschwarzer at sschwarzer.net
Mi Sep 4 23:15:16 CEST 2013


Hallo Thomas,

On 2013-09-03 17:15, Thomas Guettler wrote:
> die Formatierung mit format() hat sicherlich Vorteile, die
> alte Methode finde ich jedoch einiges kompakter und darum
> finde ich sie in der Regel besser.
> [...]
> Ich persönlich finde es nicht sinnvoll bei bestehenden
> Projekten die % Formatierung durch die format-Methode zu
> ersetzen.
> Wie seht ihr das?

ich habe eine schwache Bevorzugung der `format`-Variante,
auch, wenn sie in vielen Fällen etwas mehr Schreibarbeit
benötigt.

Die Ersetzung von `%`-Formatierung durch
`format`-Formatierung in bestehenden Projekten sehe ich
ähnlich wie die Ersetzung von `try ... finally` durch `with`
(in den Fällen, wo es um Ressourcen-Freigabe geht): Man muss
keine Änderung vornehmen, aber die neue Notation erscheint mir
sauberer.

Davon abgesehen, kann `format` noch ein bisschen mehr, als
nur besser mit Tupeln umgehen. Zum Beispiel ist so etwas
möglich:

>>> "{0}, {1} - und noch mal {0}".format(1, 2)
'1, 2 - und noch mal 1'

>>> d = {"a": 1, "b": 2}
>>> "{0[a]} und {0[b]}".format(d)
'1 und 2'

>>> class X(object): pass
...
>>> x = X()
>>> x.a = 3
>>> x.b = 4
>>> "{0.a} und {0.b}".format(x)
'3 und 4'

oder auch "gemischt":

>>> "{0[a]} und {1.b}".format(d, x)
'1 und 4'

Viele Grüße
Stefan


Mehr Informationen über die Mailingliste python-de