Выбор ответа Middle Функции и области видимости обновлено
Когда вычисляется значение по умолчанию
Вопрос
Модуль импортирован в 10:00. В 12:00 вызвали log("x"). Какое время будет в at?
from datetime import datetime
def log(msg, at=datetime.now()):
return f"{at:%H:%M} {msg}"
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 10:00, время выполнения def. Выражение значения по умолчанию вычисляется один раз, когда выполняется def, то есть при импорте модуля.
Варианты ответа
- 12:00, время вызова функции
- 10:00, время выполнения
defправильный ответ - Время последнего вызова
log None, пока не передатьat
Разбор
Выражение значения по умолчанию вычисляется один раз, когда выполняется def, то есть при импорте модуля. Все вызовы без at получат одно и то же время 10:00. Правильно: at=None и at = at or datetime.now() (или if at is None) внутри функции.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Повтор вызова с ограничением попыток
Следующий вопрос
Где хранятся значения по умолчанию