все Python 3astпонятие
ast.expr
корень и базовые узлы
Абстрактный базовый класс всех выражений: имён, констант, вызовов, операций, списков. Всё, что вычисляется в значение, — наследник expr.
Синтаксис
isinstance(node, ast.expr)
Не путайте expr с узлом Expr: Expr — это инструкция (stmt), обёртка вокруг выражения, стоящего отдельной строкой, а expr — само выражение. У выражений есть позиции lineno/col_offset; col_offset считается в байтах UTF-8, поэтому после кириллицы в строке он не совпадает с номером символа.
Примеры
import ast
stmt = ast.parse('f(1)').body[0]
print(type(stmt).__name__, isinstance(stmt, ast.expr), isinstance(stmt, ast.stmt))
# → Expr False True
print(type(stmt.value).__name__, isinstance(stmt.value, ast.expr)) # → Call True
import ast
node = ast.parse("'я' + x", mode='eval').body.right
print(node.col_offset) # → 7 — байты UTF-8, а не символы (их 6)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности