Вы можете попробовать следующее:
def iterable(a):
try:
(x for x in a)
return True
except TypeError:
return False
Если мы сможем сделать генератор, который выполняет итерацию по нему (но никогда не используйте генератор, чтобы он не занимал место), он повторяется. Кажется, что-то вроде «духа». Почему вам нужно определить, является ли переменная итерируемой в первую очередь?