все Python 3astпонятие
ast.Module
корень и базовые узлы
Корневой узел, который ast.parse возвращает в режиме по умолчанию 'exec': весь файл или фрагмент кода как список инструкций.
Синтаксис
ast.Module(body, type_ignores)
В body лежат только инструкции: даже одиночное выражение '1 + 2' приходит обёрнутым в Expr, а его значение — в body[0].value. Узел Module, собранный руками, в Python 3.11 и раньше обязан получить type_ignores=[] — иначе compile() откажет с «required field type_ignores missing». И перед compile() вызывайте ast.fix_missing_locations: у самодельных узлов нет lineno.
Примеры
import ast
tree = ast.parse('x = 1\nprint(x)')
print(type(tree).__name__) # → Module
print([type(s).__name__ for s in tree.body]) # → ['Assign', 'Expr']
print(type(ast.parse('1 + 2').body[0].value).__name__) # → BinOp
import ast
call = ast.Expr(ast.Call(ast.Name('print', ast.Load()), [ast.Constant(42)], []))
tree = ast.fix_missing_locations(ast.Module(body=[call], type_ignores=[]))
exec(compile(tree, '<ast>', 'exec'))
# → 42
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности