Есть функция def f(a, b, c): return a + b + c. Какой вызов не выполнится из-за позиции аргументов (позиционный после именованного)?
A
f(1, 2, 3)B
f(1, b=2, 3)C
f(a=1, b=2, c=3)D
f(1, 2, c=3)Правильный ответ. После передачи именованного аргумента нельзя передавать позиционные аргументы.
Разбор
В Python позиционные аргументы должны идти до именованных. Вызов f(1, b=2, 3) нарушает это правило: после b=2 идет позиционный 3. Такой код приводит к ошибке вида «positional argument follows keyword argument». Остальные варианты корректны, потому что либо все позиционные, либо все именованные, либо позиционные идут перед именованными.
Проверь себя · 1/3разбор после ответа
Есть функция
def f(a, b): return a + b. Что произойдет при вызове f(1, a=2)?Ещё вопросы по теме «Функции и аргументы»
- Есть функция `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()`?
- Все вопросы по «Функции и аргументы» →