假设我想从已生成的AST树中获取所有变量的类型,这些变量来自一些源代码 - 我该如何做呢?例如,假设在我的源代码中有类似于i = 5这样的内容。如何从抽象语法树中确定i的类型是整数?
我尝试了
我尝试了
type()
函数;然而,它在这种情况下不起作用。type()
函数;然而,它在这种情况下不起作用。您仍然可以使用Logilab的Astng1,该模块是Pylint2的基础,并提供静态推断功能。
以下是一个快速示例:
from logilab.astng.builder import ASTNGBuilder
builder = ASTNGBuilder()
astng = builder.string_build('i = 1', __name__, '<string>')
assnode = astng['']
print [(inf.value, type(inf.value)) for inf in assnode.infer()]
你不能这样做,因为Python的变量没有类型,值才有类型。
这就是动态类型的工作原理。