все Python 3astфункция
ast.parse()
вспомогательные функции
Разбирает исходный код в дерево узлов AST, не исполняя его. Отправная точка любого анализа кода: линтера, проверки решения, подсчёта конструкций.
Синтаксис
ast.parse(source, filename='<unknown>', mode='exec', *, type_comments=False, feature_version=None)
Успешный разбор не значит, что код корректен: ast.parse('return 1') и ast.parse('yield x') проходят, а compile() того же дерева падает с SyntaxError — области видимости parse не проверяет. Режим важен: mode='exec' даёт Module со списком инструкций body, mode='eval' — Expression с одним выражением body. Комментарии в дерево не попадают вовсе (кроме '# type:' при type_comments=True).
Примеры
import ast
tree = ast.parse('total = price * 2')
print(type(tree).__name__, len(tree.body)) # → Module 1
print(type(tree.body[0]).__name__) # → Assign
expr = ast.parse('price * 2', mode='eval')
print(type(expr).__name__, type(expr.body).__name__) # → Expression BinOp
import ast
tree = ast.parse('return 42') # разбор проходит: parse не проверяет области видимости
print(type(tree.body[0]).__name__) # → Return
try:
compile(tree, '<ast>', 'exec')
except SyntaxError as e:
print(type(e).__name__, e.msg) # → SyntaxError 'return' outside function
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности