You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:32:02