Python Glossary English

все Python 3astпонятие

ast.Expression

корень и базовые узлы

Корень дерева, которое строит ast.parse(src, mode='eval'): одно выражение в поле body — его можно скомпилировать для eval().

Синтаксис

ast.parse(source, mode='eval') -> ast.Expression(body)

В отличие от Module, у Expression поле body — один узел, а не список: tree.body[0] здесь падает с TypeError. Режим 'eval' сразу отвергает инструкции: строка 'x = 1' даст SyntaxError ещё при разборе. Не путайте с ast.Expr — это инструкция-выражение внутри Module.body (например, вызов print(...) отдельной строкой). Дерево Expression компилируют только с mode='eval', иначе compile() откажет с TypeError.

Примеры

import ast
tree = ast.parse('2 * 21', mode='eval')
print(type(tree).__name__, type(tree.body).__name__)  # → Expression BinOp
print(eval(compile(tree, '<expr>', 'eval')))  # → 42
import ast
try:
    ast.parse('x = 1', mode='eval')
except SyntaxError:
    print('mode=eval: only expressions')  # → mode=eval: only expressions

См. также

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

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