访问python模块代码

时间:2014-08-29 13:25:59

标签: python python-2.7 introspection

我正在尝试访问导入模块时执行的代码。

可视化源或编辑它不是问题。我想知道存储这些指令的位置。

示例

module.py

def func():
    print 'func'

print 'module'

Python控制台

>>> import module
module
>>> import dis
>>> dis.dis(module)
Disassembly of func:
0 LOAD_CONST               1 ('func')
3 PRINT_ITEM          
4 PRINT_NEWLINE       
5 LOAD_CONST               0 (None)
8 RETURN_VALUE        
>>> dir(module)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'func']

我在哪里可以找到<function>对象,或func_code或存储print 'module'指令的任何内容?

1 个答案:

答案 0 :(得分:0)

From the documentation:

dis.dis([bytesource])

反汇编bytesource对象。 bytesource可以表示模块,类,方法,函数或代码对象。对于模块,它会反汇编所有函数。

由于module.py是一个模块,它会反汇编模块中的所有功能。作为&#34; print&#39;模块&#39;&#34;呼叫不在功能中,它不会被反汇编。

编辑:

要回答实际问题(对不起),当您导入模块本身时调用语句,我很确定您可以按如下方式解决它(尽管这有点可怕,因为解决方案去,这可能是一个更好的方法):

class importer():
    def import_module():
        import module
dis.dis(importer)

这是一种轻微的滥用行为,但嘿,似乎有效。