Python Glossary English

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