Python Glossary English

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

ast.iter_child_nodes()

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

Перебирает прямых потомков узла — только один уровень вниз. Основа для собственного рекурсивного обхода дерева.

Синтаксис

for child in ast.iter_child_nodes(node): ...

В отличие от walk, не спускается глубже и не возвращает сам узел. Поля-списки (body, args) разворачиваются в отдельные узлы, а поля-не-узлы (строка id у Name, число в Constant.value) пропускаются. Служебные узлы вроде Load() тоже считаются детьми — фильтруйте по isinstance.

Примеры

import ast
node = ast.parse('a + 1', mode='eval').body
print([type(c).__name__ for c in ast.iter_child_nodes(node)])  # → ['Name', 'Add', 'Constant']
import ast
def depth(node):
    return 1 + max((depth(c) for c in ast.iter_child_nodes(node)), default=0)
print(depth(ast.parse('f(g(h(x)))', mode='eval')))  # → 6

См. также

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