[Python-de] Re: auf Liste testen
"Martin v. Löwis"
martin at v.loewis.de
Sam Dez 17 20:29:55 CET 2005
Harald Armin Massa wrote:
> Warum muß man überhaupt wissen, ob etwas eine Liste ist?
Es kommt oft vor, dass man zwischen Liste (von Strings)
und String unterscheiden möchte; i.d.R. gilt ein Stringargument
dann gleichwertig mit "Liste bestehend nur aus dem String".
Etwa in der Art
def process(thing):
for text in thing:
output(text)
Wenn jetzt thing ein String ist, "funktioniert" der Algorithmus
immernoch - ruft aber output() für jedes einzelne Zeichen aus.
In diesem Fall sollte man "ist string" testen, und nicht
"ist liste": auch wenn es Tupel oder sonst eine Folge ist,
will man die Elemente ausgeben.
M.E. richtig lautet die Funktion
def process(thing):
if isinstance(thing, basestring):
output(text)
return
for text in thing:
output(text)
D.h. der Test sollte nicht lauten
if type(thing) == str
weil das keine Unicode-Strings erkennt;
if type(thing) in (str, unicode):
hat den gleichen Effekt, ist aber vielleicht etwas
langsamer.
Ciao,
Martin