假设我已经在解释器中导入了一个 python 模块。如何在解释器中获取导入模块(以及其中的任何函数和类)的抽象语法树?我不想重新解析源文件。谢谢!
最佳答案
也许你会从这个食谱中找到一些灵感:
A function that outputs a human-readable version of a Python AST.
Python 2 选项(如 compiler is removed in Python 3 ):使用 compiler
结合 inspect
(当然,它仍然使用源代码):
>>> import compiler, inspect
>>> import re # for testing
>>> compiler.parse(inspect.getsource(re))
Module('Support for regular expressions (RE). \n\nThis module provides ...
python 3:
>>> import ast, inspect
>>> ast.parse(inspect.getsource(re))
<_ast.Module at 0x7fdcbd1ac550>
关于python:获取导入函数的抽象语法树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812144/