如何提取Python嵌套函数名称?AST库仅识别第一层问题求助
解决AST获取所有嵌套函数名称的方案
- 核心思路:AST支持递归遍历所有节点,只需遍历AST树,收集所有
FunctionDef类型节点的名称即可,不管嵌套层级。 - 实现代码:
import ast def get_all_function_names(code): tree = ast.parse(code) function_names = [] def traverse(node): if isinstance(node, ast.FunctionDef): function_names.append(node.name) # 递归遍历当前函数体内的所有子节点 for child in ast.walk(node.body): traverse(child) traverse(tree) return tuple(function_names) # 测试示例 sample_code = """ def function_one(): print("Function one") def function_two(): print("Function two") def function_three(): print("Function three") """ print(get_all_function_names(sample_code)) # 输出: ('function_one', 'function_two', 'function_three')
- 关键说明:
ast.parse()将字符串代码转换为抽象语法树- 递归函数
traverse会检查每个节点,一旦识别为函数定义节点,就记录名称,同时继续遍历该函数体内的所有子节点,不放过嵌套的函数 - 最终将收集到的函数名转为元组,符合期望输出格式
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

