Дана функция def add(a, b, c): return a + b + c и список nums = [1, 2, 3]. Что вернёт вызов add(*nums)?
AЧисло
6 после распаковки nums в позиционные a=1, b=2, c=3BЧисло
1 после передачи в a только первого элемента списка numsCКортеж
(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)?Ещё вопросы по теме «Функции и аргументы»
- Есть функция `def add(x, y): return x + y`. Что вернет вызов `add(2, 3)`?
- Дана функция `def f(a, b, c): return a * 100 + b * 10 + c`. Что вернёт вызов `f(1, c=3, b=2)`?
- Есть функция `def power(x, exp=2): return x ** exp`. Что вернёт вызов `power(3)`?
- Дана функция `def total(*args): return sum(args)`. Что вернёт вызов `total(1, 2, 3)`?
- Дан код: `x = 10` на верхнем уровне модуля и `def inc(): return x + 1`. Что вернёт вызов `inc()`?
- Все вопросы по «Функции и аргументы» →