Выбор ответа Senior Функции и области видимости обновлено

Где хранятся значения по умолчанию

Вопрос

Где хранятся значения по умолчанию позиционных и только именованных параметров функции?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В f.defaults (кортеж) и f.kwdefaults (словарь). При выполнении def вычисленные значения по умолчанию сохраняются в атрибутах функции: для обычных параметров в кортеже defaults, для параметров после в словаре kwdefaults.

Варианты ответа

  1. В f.__code__.co_consts вместе с константами
  2. В f.__defaults__ (кортеж) и f.__kwdefaults__ (словарь)правильный ответ
  3. В глобальном словаре модуля под именем функции
  4. Пересоздаются при каждом вызове из исходного кода

Разбор

При выполнении def вычисленные значения по умолчанию сохраняются в атрибутах функции: для обычных параметров в кортеже __defaults__, для параметров после * в словаре __kwdefaults__. Отсюда и ловушка изменяемых значений: объект в __defaults__ один на все вызовы. co_consts хранит константы байткода, а пересоздания при вызове нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.