Есть функция def f(x, y): return x + y и словарь params = {'x': 1, 'y': 2}. Что произойдёт при вызове f(**params)?

AВызов f(**params) передаст x=1, y=2 как именованные аргументы
BВызов f(**params) передаст params как один позиционный аргумент
CВызов f(**params) передаст ключи 'x' и 'y' как позиционные аргументы
DВызов f(**params) вызовет TypeError, если ключи словаря — строки
Правильный ответ. Оператор ** при вызове функции распаковывает словарь в именованные аргументы: ключи становятся именами параметров.

Разбор

Запись f(**params) эквивалентна f(x=1, y=2). Ключи словаря должны совпадать с именами параметров функции и быть строками. Если в словаре есть ключ, которого нет в сигнатуре функции (и нет **kwargs), будет TypeError. Аналогично, * распаковывает список или кортеж в позиционные аргументы.

Проверь себя · 1/3разбор после ответа
Есть список приоритетов tasks = ['low', 'medium']. Что произойдёт после вызова tasks.insert(0, 'urgent')?
Тренировать Python в Telegram

Ещё вопросы по теме «Коллекции и структуры данных»