Выбор ответа Junior Функции и области видимости спрашивают часто обновлено
Что такое *args и **kwargs
Вопрос
Чем будут args и kwargs при вызове f(1, 2, x=3) для def f(*args, **kwargs)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: args = (1, 2), kwargs = {"x": 3}. Лишние позиционные аргументы собираются в кортеж, именованные в словарь.
Варианты ответа
args = [1, 2],kwargs = {"x": 3}args = (1, 2, 3),kwargs = {}args = (1, 2),kwargs = {"x": 3}правильный ответargs = (1, 2),kwargs = (("x", 3),)
Разбор
Лишние позиционные аргументы собираются в кортеж, именованные в словарь. Не в список: кортеж неизменяем. Именованный x=3 не попадает в args. Имена args и kwargs просто соглашение, важны звёздочки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Функции и области видимости»
- Как передаются аргументы в функцию Python
- Где хранятся переменные замыкания
- Вызов с *args и **kwargs: разбор сигнатуры
- Композиция функций
- Мемоизация через замыкание
- Повтор вызова с ограничением попыток
- Когда вычисляется значение по умолчанию
- Где хранятся значения по умолчанию