python dis 输出中的 >> 是什么?
what's >> in python dis output?
我有以下代码
code = '''
x = ['a','b','c']
for each in x:
print(each)
'''
我使用了 python 的 dis
包的 dis
函数并得到了以下输出
dis.dis(code)
> 2 0 LOAD_CONST 0 ('a')
> 2 LOAD_CONST 1 ('b')
> 4 LOAD_CONST 2 ('c')
> 6 BUILD_LIST 3
> 8 STORE_NAME 0 (x)
>
> 3 10 SETUP_LOOP 20 (to 32)
> 12 LOAD_NAME 0 (x)
> 14 GET_ITER
> >> 16 FOR_ITER 12 (to 30)
> 18 STORE_NAME 1 (each)
>
> 4 20 LOAD_NAME 2 (print)
> 22 LOAD_NAME 1 (each)
> 24 CALL_FUNCTION 1
> 26 POP_TOP
> 28 JUMP_ABSOLUTE 16
> >> 30 POP_BLOCK
> >> 32 LOAD_CONST 3 (None)
> 34 RETURN_VALUE
我想知道 >>
在此输出中的意义是什么。它正在为 FOR_ITER
、POP_BLOCK
、LOAD_CONST
.
打印
如果您查找字节偏移量,您会发现每个标记行都是跳转或其他分支操作的对象。它应该可以帮助您更轻松地识别循环范围等。
我有以下代码
code = '''
x = ['a','b','c']
for each in x:
print(each)
'''
我使用了 python 的 dis
包的 dis
函数并得到了以下输出
dis.dis(code)
> 2 0 LOAD_CONST 0 ('a')
> 2 LOAD_CONST 1 ('b')
> 4 LOAD_CONST 2 ('c')
> 6 BUILD_LIST 3
> 8 STORE_NAME 0 (x)
>
> 3 10 SETUP_LOOP 20 (to 32)
> 12 LOAD_NAME 0 (x)
> 14 GET_ITER
> >> 16 FOR_ITER 12 (to 30)
> 18 STORE_NAME 1 (each)
>
> 4 20 LOAD_NAME 2 (print)
> 22 LOAD_NAME 1 (each)
> 24 CALL_FUNCTION 1
> 26 POP_TOP
> 28 JUMP_ABSOLUTE 16
> >> 30 POP_BLOCK
> >> 32 LOAD_CONST 3 (None)
> 34 RETURN_VALUE
我想知道 >>
在此输出中的意义是什么。它正在为 FOR_ITER
、POP_BLOCK
、LOAD_CONST
.
如果您查找字节偏移量,您会发现每个标记行都是跳转或其他分支操作的对象。它应该可以帮助您更轻松地识别循环范围等。