Python Glossary English

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Сообщить о неточности