Задача: сделать функцию, которая бы давала сумму всех аргументов, при условии, что аргументы являются числами, списками, кортежами или любой комбинацией указанных типов. Сделал так:
def add_coll(*args):
for i in args:
if isinstance(i, tuple) or isinstance(i, list):
add_coll(*i)
return sum(args)
По задумке, функция должна воспроизводить себя до того момента, пока вложенные объекты будут итерируемые. А в итоге сложить все элементы полученного списка. При введении списка
написанная функция выдает ошибку:
TypeError: unsupported operand type(s) for +: ‘int’ and ‘list’
Вместо
, подставил
и получил:
>>> (1, 2, 3)
>>> ([1, 2, 3],)
Мне не понятен механизм, как список заново попадает в аргументы? И как сделать, чтобы функция работала, в соответсвии с задачей?
Спасибо.