我试图理解生成器的字节码以及它的内部工作原理,但这非常令人困惑。有人能解释一下这是怎么回事吗。https://i.stack.imgur.com/TqEGI.png
而且,当我试着
x = (i for i in [1,2])
x.__code__
我得到了这个错误
AttributeError: generator object has no attribute __code__
如果这不起作用,那么我们可以看到代码对象列表,如co_names, co_consts
等。
发布于 2020-06-21 12:48:31
使用dis
模块,您可以显示程序集:
>>> import dis
>>> dis.dis((i for i in [1,2]))
1 0 LOAD_FAST 0 (.0)
>> 2 FOR_ITER 10 (to 14)
4 STORE_FAST 1 (i)
6 LOAD_FAST 1 (i)
8 YIELD_VALUE
10 POP_TOP
12 JUMP_ABSOLUTE 2
>> 14 LOAD_CONST 0 (None)
16 RETURN_VALUE
https://stackoverflow.com/questions/62498417
复制