我想知道为什么PythonLOAD_CONST在定义一个类时会两次使用相同的值(类名)。当我运行这段代码时:
from dis import dis
dis("class A(): pass")
这是我得到的输出:
1 0 LOAD_BUILD_CLASS
2 LOAD_CONST 0 (<code object A at 0x0000021DCE681B70, file "<dis>", line 1>)
4 LOAD_CONST 1 ('A')
6 MAKE_FUNCTION 0
8 LOAD_CONST 1 ('A')
10 CALL_FUNCTION 2
12 STORE_NAME 0 (A)
14 LOAD_CONST 2 (None)
16 RETURN_VALUE
Disassembly of <code object A at 0x0000021DCE681B70, file "<dis>", line 1>:
1 0 LOAD_NAME 0 (__name__)
2 STORE_NAME 1 (__module__)
4 LOAD_CONST 0 ('A')
6 STORE_NAME 2 (__qualname__)
8 LOAD_CONST 1 (None)
10 RETURN_VALUE
正如您在第 3 行和第 5 行中看到的,有两个LOAD_CONST带有类名。
LOAD_CONST如果类名已经加载,为什么还要使用相同的数据创建第二个呢?MAKE_FUNCTION这和他们之间有什么关系吗LOAD_CONST?
我在 python 3.7.4 64 位上运行它
慕姐4208626
相关分类