Проверка типа: итеративный тип, который не является строкой

Чтобы объяснить лучше, рассмотрим эту простую функцию проверки типа:

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

Еслиobj итеративный тип, отличный отstr, это возвращаетTrue, Однако еслиobj этоstr или не повторяемый тип, он возвращаетFalse.

Есть ли способ выполнить проверку типа более эффективно? Я имею в виду, это кажется излишним, чтобы проверить типobj один раз, чтобы увидеть, если это неstr а потом проверьочередной раз чтобы увидеть, является ли это итеративным.

Я думал о перечислении всех других повторяемых типов, кромеstr нравится:

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

Но проблема в том, что этот подход будет пропускать любые другие итерируемые типы, которые явно не перечислены.

Итак ... есть ли что-нибудь лучше или подход, который я дал в функции, наиболее эффективен?

Ответы на вопрос(2)

Ваш ответ на вопрос