Дана функция def add(a, b, c): return a + b + c и список nums = [1, 2, 3]. Что вернёт вызов add(*nums)?

AЧисло 6 после распаковки nums в позиционные a=1, b=2, c=3
BЧисло 1 после передачи в a только первого элемента списка nums
CКортеж (1, 2, 3) без распаковки: nums уйдёт в a как один объект
DОшибка TypeError: add не принимает список nums как один аргумент
Правильный ответ. Оператор * при вызове функции распаковывает список в позиционные аргументы.

Разбор

Вызов add(*nums) эквивалентен add(1, 2, 3): элементы списка подставляются как позиционные аргументы. Поэтому результат — 6. Если бы количество элементов в списке не совпало с числом параметров, возник бы TypeError. Распаковка через * полезна, когда аргументы уже собраны в список или кортеж, но функция принимает их позиционно.

Проверь себя · 1/3разбор после ответа
Дана функция def total(*args): return sum(args). Что вернёт вызов total(1, 2, 3)?
Тренировать Python в Telegram

Ещё вопросы по теме «Функции и аргументы»