Python Glossary English

Python 3.8+astпонятие

ast.NamedExpr

выражения

Узел моржового оператора (x := value): target — Name со Store, value — выражение.

Синтаксис

ast.NamedExpr(target, value)

Это выражение, а не инструкция: (x := 1) на верхнем уровне разбирается в Expr с NamedExpr внутри, а без скобок x := 1 — SyntaxError ещё в ast.parse. Цель — только простое имя: в отличие от Assign, туда не попадут ни атрибут, ни индекс, ни кортеж. Ищите присваивания и по NamedExpr, иначе переменные из if (n := len(a)) > 10 потеряются.

Примеры

import ast
stmt = ast.parse('if (n := len(a)) > 10: pass').body[0]
w = stmt.test.left
print(type(w).__name__, w.target.id, type(w.target.ctx).__name__)  # → NamedExpr n Store
import ast
try:
    ast.parse('x := 1')
except SyntaxError as e:
    print(type(e).__name__)  # → SyntaxError

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности