Typüberprüfung: Ein iterierbarer Typ, der keine Zeichenfolge ist
Betrachten Sie zur besseren Erklärung diese einfache Funktion zur Typprüfung:
from collections import Iterable
def typecheck(obj):
return not isinstance(obj, str) and isinstance(obj, Iterable)
Obobj
ist ein anderer iterierbarer Typ alsstr
es kehrt zurückTrue
. jedoch, wennobj
ist einstr
oder ein nicht iterierbarer Typ wird zurückgegebenFalse
.
Gibt es eine Möglichkeit, die Typprüfung effizienter durchzuführen? Ich meine, es scheint irgendwie überflüssig, den Typ zu überprüfenobj
einmal um zu sehen, ob es nicht einstr
und dann überprüfe esnochmal um zu sehen, ob es iterabel ist.
Ich dachte darüber nach, jeden anderen iterablen Typ aufzulistenstr
so was:
return isinstance(obj, (list, tuple, dict,...))
Das Problem ist jedoch, dass bei diesem Ansatz keine anderen iterierbaren Typen fehlen, die nicht explizit aufgeführt sind.
Also ... gibt es etwas Besseres oder ist der Ansatz, den ich in der Funktion angegeben habe, der effizienteste?