Python Glossary English

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