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.

Code: Alles auswählen

...
if type(L) is list:
...

Re: Typ festellen

Verfasst: Sonntag 21. Januar 2024, 17:07
von grubenfox
Was soll da los sein?

Code: Alles auswählen

<class 'list'>
ist ein anderer String als der String

Code: Alles auswählen

'list'

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

Code: Alles auswählen

if type(L) == 'list':
macht man

Code: Alles auswählen

if type(L) is list:

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