Python 3.14+annotationlibфункция
annotationlib.call_evaluate_function()
низкоуровневые вызовы
Вычисляет ленивое значение псевдонима типа или границы TypeVar в нужном формате: VALUE, FORWARDREF или STRING.
Синтаксис
annotationlib.call_evaluate_function(evaluate, format, *, owner=None)
Правая часть type Alias = ... тоже ленивая: опечатка в ней не ловится при определении, а всплывает NameError при первом обращении к Alias.__value__. call_evaluate_function(Alias.evaluate_value, Format.STRING) покажет выражение, ничего не вычисляя, а FORWARDREF заменит неизвестные имена на ForwardRef. В отличие от call_annotate_function, возвращает одно значение, а не словарь.
Примеры
# Python 3.14+
from annotationlib import call_evaluate_function, Format
type Rows = list[Row] # Row не объявлен — определение проходит
print(call_evaluate_function(Rows.evaluate_value, Format.STRING)) # → list[Row]
print(call_evaluate_function(Rows.evaluate_value, Format.FORWARDREF)) # → list[ForwardRef('Row')]
try:
Rows.__value__
except NameError as e:
print(e) # → name 'Row' is not defined
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности