Есть функция 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». Остальные варианты корректны, потому что либо все позиционные, либо все именованные, либо позиционные идут перед именованными.
Можно заниматься бесплатно
Готовим вопросы…
Три вопроса по теме этой страницы, с объяснениями.
Ещё вопросы по теме «Функции и аргументы»
- Есть функция `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()`?
- Все вопросы по «Функции и аргументы» →