了解一下堆栈虚拟机和字节码
python用dis模块将程序反编译为字节码对应的操作码。
>>> import dis
>>> def f(x):
return(10*x)
>>> def x():
a=[1,2,3]
for i in a:
b=f(i)
print(b)
>>> dis.dis(x)
2 0 LOAD_CONST 1 (1)
3 LOAD_CONST 2 (2)
6 LOAD_CONST 3 (3)
9 BUILD_LIST 3
12 STORE_FAST 0 (a)
3 15 SETUP_LOOP 36 (to 54)
18 LOAD_FAST 0 (a)
21 GET_ITER
>> 22 FOR_ITER 28 (to 53)
25 STORE_FAST 1 (i)
4 28 LOAD_GLOBAL 0 (f)
31 LOAD_FAST 1 (i)
34 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
37 STORE_FAST 2 (b)
5 40 LOAD_GLOBAL 1 (print)
43 LOAD_FAST 2 (b)
46 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
49 POP_TOP
50 JUMP_ABSOLUTE 22
>> 53 POP_BLOCK
>> 54 LOAD_CONST 0 (None)
57 RETURN_VALUE
>>>