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