Как накопить значения внутри функции, без второго параметра, по условию в objects может быть передан и кортеж

Рейтинг: 0Ответов: 1Опубликовано: 14.04.2023
def universal_summ(*objects, total=[]):
    for i in objects:
        if not isinstance(i, list):
            total.append(i)
        elif isinstance(i, list):
            for j in i:
                universal_summ(j)
    return sum(total)

print(universal_summ([[1, 2, [3]], [1], 3]))
print(universal_summ([[1, 2, [3]], [1], 3]))

Ответы

▲ 0Принят

Добро пожаловать на StackOverflow!

Вы можете создать переменую result с результатом выполнения функции и возвращать её. Чтобы сделать проверку на кортеж, вы так же можете использовать функцию isinstance

def universal_summ(*objects):
    result = 0
    for i in objects:
        if isinstance(i, tuple) or isinstance(i, list):
            result += universal_summ(*i)
        else:
            result += i
    return result