Message383460
(Using CPython commit c95f8bc270.)
This program has extra bytecodes:
def f():
for i in range(10):
break
return 17
The dis output is:
1 0 LOAD_CONST 0 (<code object f at 0x109cf7450, file "afterbreak.py", line 1>)
2 LOAD_CONST 1 ('f')
4 MAKE_FUNCTION 0
6 STORE_NAME 0 (f)
8 LOAD_CONST 2 (None)
10 RETURN_VALUE
Disassembly of <code object f at 0x109cf7450, file "afterbreak.py", line 1>:
2 0 LOAD_GLOBAL 0 (range)
2 LOAD_CONST 1 (10)
4 CALL_FUNCTION 1
6 GET_ITER
8 FOR_ITER 8 (to 18)
10 STORE_FAST 0 (i)
3 12 POP_TOP
4 14 LOAD_CONST 2 (17)
16 RETURN_VALUE
>> 18 LOAD_CONST 2 (17)
20 RETURN_VALUE
The break has something to do with it, because if I change the Python to:
def f():
for i in range(10):
a = 1
return 17
then the dis output is:
1 0 LOAD_CONST 0 (<code object f at 0x10bf8f450, file "afterbreak.py", line 1>)
2 LOAD_CONST 1 ('f')
4 MAKE_FUNCTION 0
6 STORE_NAME 0 (f)
8 LOAD_CONST 2 (None)
10 RETURN_VALUE
Disassembly of <code object f at 0x10bf8f450, file "afterbreak.py", line 1>:
2 0 LOAD_GLOBAL 0 (range)
2 LOAD_CONST 1 (10)
4 CALL_FUNCTION 1
6 GET_ITER
>> 8 FOR_ITER 8 (to 18)
10 STORE_FAST 0 (i)
3 12 LOAD_CONST 2 (1)
14 STORE_FAST 1 (a)
16 JUMP_ABSOLUTE 8
4 >> 18 LOAD_CONST 3 (17)
20 RETURN_VALUE |
|
Date |
User |
Action |
Args |
2020-12-20 21:29:18 | nedbat | set | recipients:
+ nedbat, Mark.Shannon |
2020-12-20 21:29:18 | nedbat | set | messageid: <1608499758.44.0.239199538725.issue42696@roundup.psfhosted.org> |
2020-12-20 21:29:18 | nedbat | link | issue42696 messages |
2020-12-20 21:29:18 | nedbat | create | |
|