Closed
Description
Documentation
The documentation for 3.11 (https://docs.python.org/3.11/library/dis.html#opcode-MAKE_FUNCTION) related to MAKE_FUNCTION
seems to be the same for Python 3.10, which would expect 2 elements to be removed from the stack, yet, it seems that only 1 element is removed from the stack (it appears that the qualifier is no longer there).
i.e.:
Given:
import dis
def func():
def check():
pass
dis.dis(func)
The output I have in 3.11 is:
4 0 RESUME 0
5 2 LOAD_CONST 1 (<code object check at 0x000001F555E3EAD0, file "W:\pydev.debugger\check\snippet6.py", line 5>)
4 MAKE_FUNCTION 0
6 STORE_FAST 0 (check)
8 LOAD_CONST 0 (None)
10 RETURN_VALUE
Disassembly of <code object check at 0x000001F555E3EAD0, file "W:\pydev.debugger\check\snippet6.py", line 5>:
5 0 RESUME 0
6 2 LOAD_CONST 0 (None)
4 RETURN_VALUE
and in 3.10 it is:
5 0 LOAD_CONST 1 (<code object check at 0x000001F384D5D370, file "W:\pydev.debugger\check\snippet6.py", line 5>)
2 LOAD_CONST 2 ('func.<locals>.check')
4 MAKE_FUNCTION 0
6 STORE_FAST 0 (check)
8 LOAD_CONST 0 (None)
10 RETURN_VALUE
Disassembly of <code object check at 0x000001F384D5D370, file "W:\pydev.debugger\check\snippet6.py", line 5>:
6 0 LOAD_CONST 0 (None)
2 RETURN_VALUE
The __qualname__
still seems to be set in the function (but that's probably happening through some other way now...).