Специальный тип typing.Any, указывает на неограниченный тип (т. е. динамический тип). Не поддерживает синтаксис [].
Для этого типа верны утверждения:
typing.Any;typing.Any совместим со всеми типами.Это означает, что можно выполнить любую операцию или вызов метода для значения типа typing.Any и присвоить его любой переменной:
from typing import Any # переменная `a` динамически # изменяет свой тип a = None # type: Any a = [] # проверка типа -> OK a = 2 # проверка типа -> OK s = '' # type: str s = a # проверка типов выполняться не будет! def foo(item: Any) -> int: # Проверка типа: 'item' может быть # любого типа, и этот тип может # иметь метод 'bar' item.bar() ...
При присвоении значения типа typing.Any более точному типу, проверка типов выполняться не будет. Например, средство проверки аннотаций не будет сообщать об ошибке при присвоении a параметру s, даже если s был объявлен как имеющий тип str и получил значение int во время выполнения!
Изменено в Python 3.11: Специальный тип
typing.Anyтеперь можно использовать в качестве базового класса. Это может быть полезно для предотвращения ошибок проверки типов с классами, которые могут уклоняться от ввода в любом месте или являются высокодинамичными.