Sprawdzanie typu: typ iterowalny, który nie jest łańcuchem

Aby lepiej wyjaśnić, rozważ tę prostą funkcję sprawdzania typu:

from collections import Iterable
def typecheck(obj):
    return not isinstance(obj, str) and isinstance(obj, Iterable)

Jeśliobj jest typem powtarzalnym innym niżstr, wracaTrue. Jeśli jednakobj jeststr lub nie nadający się do powtórzenia typ, wracaFalse.

Czy jest jakiś sposób na sprawniejsze sprawdzenie typu? To znaczy, wydaje się zbędne, aby sprawdzić typobj raz, aby sprawdzić, czy nie jeststr a następnie sprawdź tojeszcze raz aby sprawdzić, czy jest to możliwe.

Pomyślałem o wpisaniu wszystkich innych powtarzalnych typówstr lubię to:

return isinstance(obj, (list, tuple, dict,...))

Problem polega jednak na tym, że w tym podejściu nie będzie żadnych innych typów iterowalnych, które nie są wyraźnie wymienione.

Więc ... czy jest coś lepszego, czy podejście, które podałem w funkcji, jest najbardziej efektywne?

questionAnswers(2)

yourAnswerToTheQuestion