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