Сообщить об ошибке.

Типы аннотаций Any и NoReturn модуля typing в Python.

Типизация динамических переменных и функций которые ничего не возвращают.

Типы typing.Any и typing.NoReturn могут использоваться как типы в аннотациях и не поддерживаются синтаксисом [].

typing.Any:

Специальный тип typing.Any, указывает на неограниченный тип (т. е. динамический тип).

Для этого типа верны утверждения:

  • любой тип совместим с typing.Any;
  • тип typing.Any совместим со всеми типами.

Это означает, что можно выполнить любую операцию или вызов метода для значения типа typing.Any и присвоить его любой переменной:

from typing import Any

a = None    # type: Any
a = []      # OK
a = 2       # OK

s = ''      # type: str
s = a       # OK

def foo(item: Any) -> int:
    # Проверка типов; 'item' может быть 
    # любого типа, и этот тип может 
    # иметь метод 'bar'
    item.bar()
    ...

При присвоении значения типа typing.Any более точному типу, проверка типов выполняться не будет. Например, средство проверки аннотаций не будет сообщать об ошибке при присвоении a параметру s, даже если s был объявлен как имеющий тип str и получил значение int во время выполнения!

typing.NoReturn:

Специальный тип typing.NoReturn, указывает, что функция никогда не возвращает результат.

Например:

from typing import NoReturn

def stop() -> NoReturn:
    raise RuntimeError('no way')

Новое в Python 3.6.2.