Comprobación de tipo: un tipo iterable que no es una cadena
Para explicar mejor, considere esta simple función de comprobación de tipos:
from collections import Iterable
def typecheck(obj):
return not isinstance(obj, str) and isinstance(obj, Iterable)
Siobj
es un tipo iterable distinto destr
, vuelveTrue
. Sin embargo, siobj
es unstr
o un tipo no iterable, devuelveFalse
.
¿Hay alguna manera de realizar la comprobación de tipo de manera más eficiente? Quiero decir, parece un poco redundante para comprobar el tipo deobj
Una vez para ver si no es unstr
y luego revisalootra vez Para ver si es iterable.
Pensé en enumerar todos los demás tipos iterables ademásstr
Me gusta esto:
return isinstance(obj, (list, tuple, dict,...))
Pero el problema es que ese enfoque omitirá cualquier otro tipo iterable que no esté explícitamente en la lista.
Entonces ... ¿hay algo mejor o el enfoque que di en la función es el más eficiente?