Не используется в аннотациях, являются строительным блоком для создания универсальных типов.
from typing import AnyStr def func (a: AnyStr, b: AnyStr) -> AnyStr:
a
, b
и возвращаемое значение - строка, которая может быть или str
или bytes
. Тип аннотации AnyStr
модуля typing
- это тип переменной, определенный как AnyStr = TypeVar('AnyStr', str, bytes)
.
Дополнительно смотрите тип аннотации typing.TypeVar
Этот тип аннотации предназначен для использования в функциях, которые могут принимать строки любого типа, при этом не позволяя смешивать разные типы строк.
Например:
def concat(a: AnyStr, b: AnyStr) -> AnyStr: return a + b concat(u"foo", u"bar") # вывод имеет тип unicode concat(b"foo", b"bar") # вывод имеет тип 'bytes' concat(u"foo", b"bar") # Ошибка, нельзя смешать 'unicode' и 'bytes'