Python Glossary English

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