能否从 Python 代码对象中获取 AST?

3
我知道可以通过Python的代码片段来获取其AST或者通过compile()函数获取其code object。我想知道是否可以做相反的事情:我已经有了code object(从.pyc文件中提取),现在想要获取它的AST。

2
astor,这可能会有所帮助。 - BoredRyuzaki
2个回答

0

astor第三方软件包提供了一个高级的功能性API来处理这个确切的问题。只需将所需的代码对象传递给astor.code_to_ast()函数,然后该函数会反编译该代码对象并返回相应的AST:

  • astor.code_to_ast(codeobj):
给定一个模块,或者作为模块的一部分编译的函数,重新将模块编译成AST,并提取函数的子AST。允许缓存以减少编译次数。
感谢@BoredRyuzaki的两年前的评论,他提到了astor。Ryuzaki,你可能感到无聊,但你启发了我们所有人。

-1
很遗憾,除非代码对象创建的文件仍然在路径中可用,否则通常无法通过传统方法实现。不过,有一些工具(如uncompyle6)可能会有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接