首页 > 解决方案 > 在不执行代码的情况下获取 Python 函数的完全限定名

问题描述

我正在编写一个库来帮助我可视化我自己代码的一些指标。这导致我需要我正在分析的代码中的任何函数调用的完全限定名称。

我曾希望使用 Python 的AST模块可以为我提供这个。如果我遍历树,它确实为任何导入和别名提供了节点,并且确实为实际的函数调用提供了节点。

但是,尝试从这些节点构建完全限定名称并不是一件容易的事,我怀疑它是否能处理所有情况。我该怎么做呢?(我的 IDE 支持 Go To Definition,所以我知道这是可能的。)


这是一个函数调用节点的漂亮打印,注意名称不是全名:

Call(func=Name(id='fib', ctx=Load()), args=[
    Num(n=100),
  ], keywords=[])

标签: pythonpython-3.xabstract-syntax-treestatic-analysis

解决方案


推荐阅读