Только именованный аргумент b

Одиночная * делает все следующие параметры только именованными. Поэтому b нужно передавать как b=..., а a может быть позиционным или именованным. Оба параметра обязательны.

Короткий ответ

Что ответить на собеседовании

Одиночная * делает все следующие параметры только именованными. Поэтому b нужно передавать как b=..., а a может быть позиционным или именованным. Оба параметра обязательны.

Подробный разбор

Ответ с пояснениями

Условие

Что означает символ * в определении функции?

def foo(a, *, b): 
    pass

Ответ

Одиночная * делает все следующие параметры только именованными. Поэтому b нужно передавать как b=..., а a может быть позиционным или именованным. Оба параметра обязательны.

Допустимые вызовы:

foo(1, b=2)
foo(a=1, b=2)

foo(1, 2) вызовет TypeError, потому что второй позиционный аргумент не разрешён. foo(1) тоже ошибочен: у b нет значения по умолчанию. Одиночная * не собирает аргументы в кортеж; для этого используют *args. Такая сигнатура делает назначение дополнительных параметров явным в месте вызова.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее