Есть функция 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. Это частая ошибка при смешанном стиле вызовов. Тихого приоритета или игнорирования здесь нет.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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