查看python字节码指令
最近在看《python源码剖析》这本书,其中大部分分析过程都是需要查看字节码指令的,但是书中没有指定如何获取一段代码的字节码指令,查了一下文档才发现该如何生成字节码指令,记录一下:
假如有一个python文件simple_obj.py,内容如下:
i = 1
s = "Python"
d = {}
l = []
如何得到该端代码的字节码呢?
需要使用到dis模块以及compile函数:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import dis
s = open(sys.argv[1]).read()
co = compile(s, sys.argv[1], 'exec')
print(dis.dis(co))
得到的字节码结果:
1 0 LOAD_CONST 0 (1)
3 STORE_NAME 0 (i)
2 6 LOAD_CONST 1 ('Python')
9 STORE_NAME 1 (s)
3 12 BUILD_MAP 0
15 STORE_NAME 2 (d)
4 18 BUILD_LIST 0
21 STORE_NAME 3 (l)
24 LOAD_CONST 2 (None)
27 RETURN_VALUE