def test(*args, a=5):
    return a + sum(args)
print(test(1, 2, 3))
11.
  Функция test принимает позиционные аргументы *args и именованный аргумент a с значением по умолчанию 5.
  Сумма позиционных аргументов (1, 2, 3) равна 6.
  Затем к этой сумме прибавляется значение a (5), и возвращается результат.
 Вопрос: Что выведет следующий код?
def test(*args, a=5):
    return a + sum(args)
print(test(1, 2, 3))
  Ответ и объяснение:
Код выведет число 11.
Разберем код построчно:
def test(*args, a=5): -  Это определение функции с именем test.
      *args:  Принимает произвольное количество позиционных аргументов и упаковывает их в кортеж с именем args.a=5: Определяет именованный аргумент (keyword argument) a со значением по умолчанию 5. Это значит, что если при вызове функции аргумент a не будет передан явно, он примет значение 5.return a + sum(args):  Возвращает сумму значения аргумента a и суммы всех элементов в кортеже args.print(test(1, 2, 3)):  Вызывает функцию test с позиционными аргументами 1, 2 и 3.
      test, аргументы 1, 2 и 3 будут упакованы в кортеж args, то есть args = (1, 2, 3).a не передается при вызове функции, поэтому он принимает значение по умолчанию 5.5 + sum((1, 2, 3)) = 5 + (1 + 2 + 3) = 5 + 6 = 11.print выводит возвращаемое значение функции test, то есть 11.