[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