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
.