Выбор ответа Senior Функции и области видимости обновлено
Где хранятся значения по умолчанию
Вопрос
Где хранятся значения по умолчанию позиционных и только именованных параметров функции?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В f.defaults (кортеж) и f.kwdefaults (словарь). При выполнении def вычисленные значения по умолчанию сохраняются в атрибутах функции: для обычных параметров в кортеже defaults, для параметров после в словаре kwdefaults.
Варианты ответа
- В
f.__code__.co_constsвместе с константами - В
f.__defaults__(кортеж) иf.__kwdefaults__(словарь)правильный ответ - В глобальном словаре модуля под именем функции
- Пересоздаются при каждом вызове из исходного кода
Разбор
При выполнении def вычисленные значения по умолчанию сохраняются в атрибутах функции: для обычных параметров в кортеже __defaults__, для параметров после * в словаре __kwdefaults__. Отсюда и ловушка изменяемых значений: объект в __defaults__ один на все вызовы. co_consts хранит константы байткода, а пересоздания при вызове нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Функции и области видимости»
- Что такое *args и **kwargs
- Перекрытие встроенных имён
- Как передаются аргументы в функцию Python
- Где хранятся переменные замыкания
- Вызов с *args и **kwargs: разбор сигнатуры
- Композиция функций
- Мемоизация через замыкание
- Повтор вызова с ограничением попыток