Python Glossary English

все Python 3astфункция

ast.walk()

вспомогательные функции

Генератор, обходящий все узлы дерева, включая сам корень. Самый короткий способ найти в коде все вызовы, имена или циклы.

Синтаксис

for node in ast.walk(tree): ...

Порядок обхода — в ширину, а не по тексту программы: узлы вложенного выражения могут прийти раньше соседних строк, поэтому для порядка сортируйте по (lineno, col_offset). walk не знает контекста (внутри какой функции узел) и выдаёт служебные узлы вроде Load и Add; когда нужен контекст или замена узлов, берут NodeVisitor/NodeTransformer.

Примеры

import ast
tree = ast.parse('print(len(s))\nx = input()')
calls = [n.func.id for n in ast.walk(tree) if isinstance(n, ast.Call)]
print(sorted(calls))  # → ['input', 'len', 'print']
import ast
tree = ast.parse('a + f(b)', mode='eval')
print([type(n).__name__ for n in ast.walk(tree)][:5])
# → ['Expression', 'BinOp', 'Name', 'Add', 'Call']

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности