Есть функция def f(x, y): return x + y и словарь d = {"x": 1, "y": 2}. Что произойдёт при вызове f(**d)?
AПередаст словарь
d целиком как один позиционный аргумент функции в неизменённом видеBПередаст значения как именованные аргументы: эквивалентно записи
f(x=1, y=2)CПередаст ключи
'x' и 'y' как два позиционных строковых аргумента в порядке добавленияDПоднимет
TypeError из-за того, что ключи словаря являются строками, а параметры функции ожидают числоПравильный ответ. Оператор
** при вызове функции распаковывает словарь в именованные аргументы: ключи становятся именами параметров.Разбор
Запись f(**d) эквивалентна f(x=1, y=2). Ключи словаря должны совпадать с именами параметров функции и быть строками. Если в словаре есть ключ, которого нет в сигнатуре функции (и нет **kwargs), будет TypeError. Аналогично, * распаковывает список или кортеж в позиционные аргументы.
Проверь себя · 1/3разбор после ответа
Есть множество
s = {"a", "b"}. Нужно удалить элемент "c", если он есть, и не получать ошибку, если его нет. Какой способ корректен?Ещё вопросы по теме «Коллекции и структуры данных»
- Есть список событий `events = ["click"]`. Объект `events` используется в нескольких местах по ссылке, поэтому важно изменить именно тот же объект (не создавать новый). Нужно добавить элементы из `new_events = ["view", "purchase"]`, чтобы итог был плоским. Какой вариант корректен?
- Дан словарь `d = {"country": "RU"}`. Нужно прочитать значение по ключу `"city"`, а если ключа нет — вернуть строку `"unknown"` без исключения. Что подходит?
- В логах есть список `user_ids` с повторениями. Как получить количество уникальных пользователей?
- Что произойдёт при выполнении кода `t = (1, 2); t[0] = 9`?
- Дан список `nums = [10, 20, 30, 40]`. Чему равен результат выражения `nums[1:3]`?
- Все вопросы по «Коллекции и структуры данных» →