Python 3.5+Аннотации и typingпонятие
typing.Any
any
Специальный тип: совместим с любым типом. Отключает проверку типов. Используется при миграции кода или для действительно динамических значений.
Синтаксис
from typing import Any
x: Any = ...
Any заразен: всё, что вы достали из Any-значения, тоже становится Any, и проверка молча гаснет в целом куске кода — поэтому одна ленивая аннотация способна обесценить типизацию всего модуля. Если смысл в том, что подойдёт любой объект, но пользоваться им вы собираетесь осторожно, честнее написать object: анализатор тогда заставит сузить тип перед вызовом методов. Any — это осознанное «я отключаю проверку здесь», а не «я пока не придумал тип».
Примеры
# Python 3.9+
from typing import Any
def log(value: Any) -> None: print(value)
log(42) # → 42
log('text') # → text
log([1, 2, 3]) # → [1, 2, 3]
data: list[Any] = [1, 'a', None, 3.14] # смешанный список
print(type(data[0])) # → <class 'int'>
print(Any) # → typing.Any
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности