Seite 1 von 1
Typ festellen
Verfasst: Sonntag 21. Januar 2024, 16:56
von hubgra
Was ist da los?
Code: Alles auswählen
def f(L):
print(type(L))
if type(L) == 'list':
print('L')
else:
print('else',type(L))
f([1,2])
Ausgabe:
<class 'list'>
else <class 'list'>
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 17:05
von Kyrus86
Hallo hubgra,
die Funktion "type" liefert den Typ des Objekts zurück, nicht einen String mit der Typbezeichnung.
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 17:07
von grubenfox
Was soll da los sein?
ist ein anderer String als der String
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 17:13
von hubgra
ok, aber wie kann ich feststellen, welchen Typ ein Parameter hat?
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 17:20
von Kyrus86
Hallo hubgra,
statt mit einem String, vergleicht man direkt mit dem Typ selbst.
Also statt
macht man
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 17:22
von hubgra
Danke, wo lernt man das ? Das Schlüsselwort "is" habe ich noch nie gelesen.
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 17:37
von sparrow
Ich würde das gar nicht prüfen.
Warum ist es wichtig, ob da eine Liste kommt?
Warum funktioniert an der Stelle dann kein Tuple oder ein anderes iterierbares Objekt?
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 18:06
von nezzcarth
hubgra hat geschrieben: Sonntag 21. Januar 2024, 17:22
Danke, wo lernt man das ? Das Schlüsselwort "is" habe ich noch nie gelesen.
Also im offiziellen Python-Tutorial, das finde ich jeder mal durchgearbeitet haben sollte, wird es zumindest kurz gestreift:
https://docs.python.org/3/tutorial/cont ... -functions
Etwas mehr Details zum Gesamtkontext gibt es in der ebenfalls sehr zu empfehlenden Sprachreferenz (6.10.3):
https://docs.python.org/3/reference/exp ... omparisons
Zur Typ-Prüfung selbst hat sparrow ja schon was gesagt.
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 18:43
von __blackjack__
Und wenn Typprüfung, dann nicht mit `type()` sondern mit `isinstance()` damit man wenigstens auch abgeleitete Typen nicht ausschliesst. Was ist denn hier der Anwendungsfall?
Re: Typ festellen
Verfasst: Sonntag 21. Januar 2024, 18:46
von noisefloor
Hallo,
und statt gegen `type()` zu vergleichen prüft man einfacher mit
isinstance, das liefert direkt `True` oder `False` zurück.
Gruß, noisefloor