Типы typing.Never
и typing.NoReturn
могут использоваться как типы в аннотациях и не поддерживаются синтаксис аннотации []
.
typing.Never
:Низший тип (нулевой тип, пустой тип), это тип, у которого нет членов. Низший тип - объект, использующийся в некоторых теориях типов и языках программирования, соответствующий типу без значений.
Низший тип часто используется в качестве возвращаемого значения функции, чтобы показать расходимость функции: когда функция не возвращает никаких результатов вызывающей стороне.
Аннотация typing.Never
может быть использовано для определения функции, которая никогда не должна вызываться, или функции, которая никогда не возвращает:
from typing import Never def never_call_me(arg: Never) -> None: pass def int_or_str(arg: int | str) -> None: never_call_me(arg) # ошибка проверки типа match arg: case int(): print("It's an int") case str(): print("It's a str") case _: never_call_me(arg) # проверки типа -> OK, `arg` имеет тип `Never`
Новое в Python 3.11: в более старых версиях Python может использоваться для выражения той же концепции
typing.NoReturn
. Аннотацияtyping.Never
была добавлена в Python 3.11, чтобы сделать предполагаемое значение более явным.
typing.NoReturn
:Специальный тип typing.NoReturn
, указывает, что функция никогда не возвращает результат.
Например:
from typing import NoReturn def stop() -> NoReturn: raise RuntimeError('no way')
Новое в Python 3.6.2.
Аннотацию
typing.NoReturn
также можно использовать в качестве так называемого низшего типа, типа, который не имеет значений. Начиная с Python 3.11, для этой концепции следует использовать тип аннотацииtyping.Never
. Средства проверки типов должны относиться к ним одинаково.