Abd*_*P M 8 python python-3.11
Python3.11向该dis.dis函数引入了两个新参数,show_caches和adaptive。
>>> 导入磁盘
>>>
>>> 帮助(dis.dis)
模块 dis 中函数 dis 的帮助:
dis(x=无、*、文件=无、深度=无、show_caches=False、自适应=False )
反汇编类、方法、函数和其他编译对象。
不带任何参数,反汇编最后一个回溯。
编译对象目前包括生成器对象、异步生成器
对象和协程对象,它们都存储它们的代码对象
在一个特殊的属性中。
这个参数在 python 3.11 中意味着什么?我确实通过将其设置为来检查结果,True但结果与将其设置为相同False。
>>> dis.dis("a = 1", show_caches=True, adaptive=True)
0 0 RESUME 0
1 2 LOAD_CONST 0 (1)
4 STORE_NAME 0 (a)
6 LOAD_CONST 1 (None)
8 RETURN_VALUE
>>>
>>>
>>> dis.dis("a = 1")
0 0 RESUME 0
1 2 LOAD_CONST 0 (1)
4 STORE_NAME 0 (a)
6 LOAD_CONST 1 (None)
8 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)
该show_caches参数在文档的最顶部进行了描述,dis因为可以将其传递给许多模块的函数:
版本 3.11 中的更改:某些指令伴随着一个或多个内联缓存条目,这些条目采用
CACHE指令的形式。这些指令默认是隐藏的,但可以通过传递show_caches=True给任何 dis 实用程序来显示。
adaptive在文档中描述CACHE:
该操作码不是实际的指令,而是用于标记解释器的额外空间,以便直接在字节码本身中缓存有用的数据。它会被所有 dis 实用程序自动隐藏,但可以使用
show_caches=True.从逻辑上讲,该空间是前面指令的一部分。许多操作码期望后面跟着确切数量的缓存,并将指示解释器在运行时跳过它们。
填充的缓存可能看起来像任意指令,因此在读取或修改包含加速数据的原始自适应字节码时应格外小心。
3.11 版本中的新功能。