python:获取导入函数的抽象语法树?

标签 python abstract-syntax-tree

假设我已经在解释器中导入了一个 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/

相关文章:

python - Pygame 窗口无法从 python 脚本内部打开

python - 将 c_char_p 转换为 c_char 数组

java - 如何获取变量的构造函数?

parsing - 术语解析树和推导树之间有什么区别?

Java DOM/AST - 为什么 MethodInspiration 是一个表达式?

python - 在 python 中执行任意*真实*代码块(不是字符串化版本)

python - 使用 ndimage.maximum_filter 和 skimage.peak_local_max 查找图像峰值

python - scipy curve_fit 和局部最小值 : get to global minima as fast as possible

c++ - LibClang clang_getArgType() 返回错误的类型

python - 识别 python 中的纯函数