Verificação de tipo: um tipo iterável que não é uma string
Para explicar melhor, considere esta função de verificador de tipo simples:
from collections import Iterable
def typecheck(obj):
return not isinstance(obj, str) and isinstance(obj, Iterable)
E seobj
é um tipo iterável diferentestr
, retornaTrue
. No entanto, seobj
é umstr
ou um tipo não iterável, retornaFalse
.
Existe alguma maneira de realizar a verificação de tipo de forma mais eficiente? Quero dizer, parece meio redundante verificar o tipo deobj
uma vez para ver se não é umstr
e então verifiquenovamente para ver se é iterável.
Eu pensei em listar todos os outros tipos iteráveis alémstr
como isso:
return isinstance(obj, (list, tuple, dict,...))
Mas o problema é que essa abordagem perderá todos os outros tipos iteráveis que não estejam explicitamente listados.
Então ... existe alguma coisa melhor ou a abordagem que eu dei na função é a mais eficiente?