Выбор ответа Middle Стандартная библиотека спрашивают часто обновлено

Naive и aware datetime

Вопрос

Что произойдёт при сравнении datetime.now() < datetime.now(timezone.utc)?

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

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

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

Коротко

Правильный ответ: TypeError: нельзя сравнивать naive и aware. datetime.now() без аргумента даёт naive-объект без таймзоны, а с timezone.utc aware.

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

  1. Сравнение пройдёт, naive автоматически считается UTC
  2. TypeError: нельзя сравнивать naive и awareправильный ответ
  3. Сравнение пройдёт, naive считается локальным временем
  4. Вернётся всегда False, зоны не совпадают

Разбор

datetime.now() без аргумента даёт naive-объект без таймзоны, а с timezone.utc aware. Python отказывается сравнивать их на порядок (TypeError: can't compare offset-naive and offset-aware datetimes), потому что непонятно, в какой зоне naive. Правило: внутри системы только aware-время в UTC.

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

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