最近在看《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