Выбор ответа Middle Типизация обновлено

Any против object

Вопрос

Чем аннотация x: Any отличается от x: object для анализатора?

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

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

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

Коротко

Правильный ответ: Any отключает проверки, object пускает лишь общие операции. Any совместим со всем в обе стороны: анализатор перестаёт проверять операции с переменной. object тоже принимает любое значение, но, чтобы вызвать x.upper(), нужно сначала сузить тип через isinstance.

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

  1. Это синонимы, анализатор их не различает
  2. object разрешает любые операции, а Any никаких
  3. Any означает только встроенные типы вроде int и str
  4. Any отключает проверки, object пускает лишь общие операцииправильный ответ

Разбор

Any совместим со всем в обе стороны: анализатор перестаёт проверять операции с переменной. object тоже принимает любое значение, но, чтобы вызвать x.upper(), нужно сначала сузить тип через isinstance. Поэтому для «принимаю что угодно» безопаснее object, а Any это аварийный выход.

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

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