Может использоваться как тип в аннотациях с помощью синтаксиса []
.
from typing import Literal # Новое в Python 3.8. Literal['a', 'b', ...]
'a'
, 'b'
, ...
- допустимые литеральные значения аргумента функции.Тип аннотации Literal
модуля typing
, может использоваться для указания контролерам типов, что соответствующая переменная или параметр функции имеет значение, эквивалентное предоставленному литералу или одному из нескольких литералов.
Например:
def validate_simple(data: Any) -> Literal[True]: # всегда возвращает `True` ... MODE = Literal['r', 'rb', 'w', 'wb'] def open_helper(file: str, mode: MODE) -> str: ... open_helper('/some/path', 'r') # Проходит проверку типа open_helper('/other/path', 'typo') # Ошибка в проверке типов
Тип Literal[...]
не может быть разделен на подклассы. Во время выполнения в качестве аргумента типа для Literal[...]
допускается произвольное значение, но средства проверки типов могут накладывать ограничения.
Новое в Python 3.8.
Изменено в Python 3.9.1: Тип аннотации Literal
теперь дедуплицирует параметры. При сравнении на равенство объектов Literal
больше не зависит от порядка допустимых литералов. Литеральные объекты теперь будут вызывать исключение TypeError
во время сравнения на равенство, если один из их параметров является изменяемым типом.