Есть функция def profile(name, country='RU', city='Moscow'): return f'{name}:{country}:{city}'. Что вернёт вызов profile('Ann', city='Kazan')?

AСтрока 'Ann:Kazan:RU' при перезаписи параметра country именованным city='Kazan'
BСтрока 'Ann:RU:Kazan' при позиционном name, дефолтном country и именованном city
CСтрока 'Ann:RU:Moscow' при игнорировании city='Kazan' из-за дефолта 'Moscow'
DОшибка TypeError: смешение позиционного и именованного аргумента в profile()
Правильный ответ. Именованный аргумент позволяет переопределить конкретный параметр, не меняя остальные значения по умолчанию.

Разбор

При вызове profile('Ann', city='Kazan') name передаётся позиционно, а city — по имени, поэтому country остаётся со значением по умолчанию 'RU'. Итоговая f-строка соберётся как 'Ann:RU:Kazan'. Именованные аргументы не перезаписывают порядок параметров и не игнорируются — наоборот, они позволяют переопределить нужный параметр, не трогая остальные дефолты. Сочетать позиционные и именованные аргументы можно, главное — не передавать одно и то же значение дважды.

Проверь себя · 1/3разбор после ответа
Есть функция def f(a, b): return a + b. Что произойдёт при вызове f(1, a=2)?
Тренировать Python в Telegram

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