Оlе Ѕtrеісhеr schrieb am 25.08.2017 um 10:47:
"Tobias Herp"
writes: a b und c enthalten strings.
d=a+b+c besser als # Variante 1 d="{}{}{}".format(a,b,c) ? # Variante 2
Die zweite Variante ist das übliche Idiom, wenn es um die Kombination von Strings geht.
Wirklich? Himmel hilf!
Das hängt IMO stark vom Use-Case ab. Oft hat man z.B. solche String-Concatenierungen im Zusammenhang mit der Erstellung von Dateinamen. Und da wäre es besser, ein Template zu verwenden -- genau im Sinne von "explizit ist besser als implizit":
Nur dadurch, daß etwas umständlich programmiert ist, wird es noch nicht expliziter. Und umständlich ist es, wenn man zum Hinzufügen einer weiteren Variablen zwei Änderungen vornehmen muß. Es sollte jedenfalls nicht die Antwort auf die Frage sein, wie man in Python Strings verkettet. Das ist ja schlimmer als die concat-Funktionen anderen Sprachen!
d = "{base}{revision}{suffix}".format(base = a, revision = b, suffix = c)
Wenn's denn unbedingt ein Template sein soll, würde das bei mir meistens wie folgt aussehen: d = '%(base)s%(revision)s%(suffix)s' % locals() (natürlich nennt *niemand* seine Variablen a, b und c, bzw. würde es nach Lektüre dieses Threads niemals zugeben...) Im übrigen kann es natürlich jedem Stück Code in einem größeren Projekt (oder in einer Server-Anwendung) passieren, daß es sehr oft durchlaufen wird. Und spätestens dann spielt die Performanz eine Rolle. Die .format-Methode bezahlt für ihre (ich behaupte: in mindestens 95% der Fälle nicht benötigte) zusätzliche Flexibilität mit sehr viel schlechterer Performanz.
Allgemein würde ich, wenn es sich um Strings handelt, immer genau schauen, ob man nicht eigentlich ein Template füllen möchte, das nur gerade zufällig sehr einfach ausfällt.
Man kann es auch übertreiben mit der vorausschauenden Komplexität. Wie heißt es doch so schön - YAGNI! You ain't gonna need it! Schönenn Gruß, Tobias -- Ceterum censeo: Etwaige .sig-Dateien brauchen nicht geöffnet zu werden! Siehe http://www.gnupg.org/, http://enigmail.mozdev.org/