文档信息不是很丰富(至少对我来说):
操作码::恢复(上下文)
无操作。执行内部跟踪、调试和优化 检查。
操作数由两部分组成。最低两位 指示context
发生的位置:RESUME
函数的开始,它既不是生成器, 协程 也不是异步生成器0
1
表情之后yield
2
表情之后yield from
3
表情之后await
如果RESUME位于除深度
,则下一位是1
,并且1
否则。0
示例:
>>> import dis
>>>
>>> def f(): ...
...
>>> dis.dis(f)
1 0 RESUME 0
2 LOAD_CONST 0 (None)
4 RETURN_VALUE
有人可以解释一下这个操作码的真正作用吗?
RESUME
是 NOP
操作码的一种, 意味着 它实际上不做任何事情,而是简化了字节码的生成。例如,pass
是Python中的NOP
。
当解释器输入函数时使用
RESUME
NOP。因此,它被用于 1) 在 python 函数的开头,以及 2) 在yield 语句之后。它被放置在yield语句之后,因为带有yield语句的函数实际上并不运行它们的主体代码,而只是返回一个生成器对象(而不是一个可迭代对象)。
如果它对任何人都有帮助,下面链接的博客详细讨论了 python 字节码以及如何查看它:
https://www.synopsys.com/blogs/software-security/understanding-python-bytecode.html