【发布时间】:2014-08-29 13:25:58
【问题描述】:
我正在尝试访问导入模块时执行的代码。
可视化源代码或编辑它不是这里的问题。我想知道这些指令存储在哪里。
示例
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' 指令的任何内容?
【问题讨论】:
-
@pokoli,这不相关 - 这不是 quine,它正在尝试访问字节码。
-
print 'module'不存在于任何对象中。它在定义模块时执行,但不是模块的部分。包含定义模块的代码的文件与执行该文件产生的module对象之间存在区别。 -
@chepner:哦,好的,谢谢!所以如果我想更深入,我应该打开一个不同的问题:如何挂钩 import builtin 以跟踪导入时执行的代码? (我是新来的)
-
这听起来是一个很好的问题(快速搜索
__import__并没有找到任何相关内容)。
标签: python python-2.7 introspection