
Mike Müller schrieb am 25.08.2017 um 11:18:
Am 25.08.17 um 10:28 schrieb Tobias Herp:
Dann erfüllt die "Variante 3" den Zweck:
d = ''.join([a, b, c])
...
Die "Variante 3" konvertiert Nicht-Strings stillschweigend.
Ok, hier ist mir ein Tippfehler unterlaufen; es sollte "Variante 2" heißen und trifft auf jede Template-Variante zu, egal ob als '{}'.format oder '%s' % ...
Was aber, wenn ich ganz selbstverständlich davon ausgehe, daß es Strings sind, und eine Abweichung hiervon ein sicheres Zeichen für einen Fehler ist? Ich verplempere nicht nur eine Menge Rechenzeit, sondern verberge auch noch den Fehler:
Das stimmt aber nun nicht:
''.join(['a', 2]) TypeError Traceback (most recent call last) ''.join(['a', 2]) TypeError: sequence item 1: expected str instance, int found
Das Verplempern von Rechenzeit bezog sich auch nicht auf die join-, sondern auf die grausliche .format-Variante ... Was Du ausprobiert hast, ist genau, was ich meine: wenn der join-Aufruf erfolgreich war, waren auch alle Argumente korrektermaßen Strings. Ansonsten wurde möglicherweise die aktuelle Funktion falsch aufgerufen, und die implizite Konversion würde den Fehler verbergen, der sich ansonsten durch den TypeError bemerkbar machen würde. -- Tobias