[Python-de] strings zusammensetzen.
Tobias Herp
tobias.herp at gmx.de
Fr Aug 25 17:41:55 EDT 2017
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
Mehr Informationen über die Mailingliste python-de