【发布时间】:2015-08-15 18:25:01
【问题描述】:
给定一个 python 文件,我想找出文件中标识符的所有作用域和声明。
例如,给定这个文件:
import a
from b import xyz
def my_func(g):
print "2"
my_func(0)
a.function_in_a(3)
xyz(4)
我希望输出是:
- 在第 7 行,
my_func指的是在此文件第 4 行中定义的my_func - 在第 8 行,
a指的是模块 a。function_in_a指的是模块a中定义的函数 - 第9行,
xyz指的是模块b中定义的函数
有没有图书馆可以为我做这件事?基本上我试图在IDE功能/代码自动完成/理解变量范围的上下文中使用。基本上,我有兴趣了解标识符(变量、函数等)定义的位置,就像 PyCharm 之类的 IDE 如何确定它一样。
【问题讨论】:
-
只有 Python 定义(名称绑定)中没有声明。如果名称不指代对象;它是 NameError/UnboundLocalError。看看绝地,绳索库,尽管 Python 过于动态,无法在所有情况下得到答案。
-
像 flake8 这样的包可以解决这个问题;在较低级别,您可以使用 AST。
标签: python lexical-analysis lexical-scope python-jedi