利用Inspect模块查看python对象源代码

前排@一付湘江满天香 @aoxuely
很多时候,我们在别人的代码中发现了一些对象(比如类和函数),这个时候,如果我们想查看该对象的具体实现方式,我们可以找到对应的import,然后一级一级查找其import的内容,最终找到其对应的源代码,没错,一直以来我就是这么干的。但是在一些情况下你看不到对应的import,比如我们想查看pychram的python console运行时的runfile函数,用这种方法找不到它的源代码。我们只能使用help查看对象内置的帮助文档,这样得到的信息非常有限。
在这里插入图片描述
直到今天我看到了inspect这个函数库

这个库很简单,安装好python直接就内置好了,我们打开IDLE,按F1调出文档后直接搜索inspect
在这里插入图片描述
可以看到的是,inspect这个模块可以实现类型检查,获取源代码,检查类和函数,以及检查解释器堆栈等等,具体其他的可以进一步去探索,我们目前需要的是其获取源代码的功能。如果想进阶,我们还可以在python安装目录找到inspect函数或者直接使用这个模块,获取它自身的实现方式。
废话不多说,上例子

import inspect as ist
a = ist.getsource(runfile)
type(a)
print(a)

在这里插入图片描述
使用inspect模块的getsource方法,可以得到一个对象的实现返回,这个返回值的类型为str,保存的便是对象的实现代码。我们可以进一步对其进行需要的处理,比如保存到文件等等。
当然,使用这个方法获取源代码的前提,是必须要将对象导入到运行环境中,这在idle和pychram的python console中还是比较实用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章