Hello World
1.6K subscribers
71 photos
6 videos
3 files
161 links
Be so good that you cannot be ignored. And then, go one step beyond.
Download Telegram
Итерируемые объекты

Итак, когда выполняется следующий код:
x = [1, 2, 3]
for item in x:
pass


Вот что происходит на самом деле:
>>> import dis
>>> x = [1, 2, 3]
>>> dis.dis('for _ in x: pass')
1 0 SETUP_LOOP 14 (to 17)
3 LOAD_NAME 0 (x)
6 GET_ITER
>> 7 FOR_ITER 6 (to 16)
10 STORE_NAME 1 (_)
13 JUMP_ABSOLUTE 7
>> 16 POP_BLOCK
>> 17 LOAD_CONST 0 (None)
20 RETURN_VALUE


📌Если диассемблировать код, представленный выше, мы обнаружим вызов GET_ITER, который по сути является следствием вызова iter(x). Инструкция FOR_ITER является эквивалентом многократного вызова next() до тех пор, пока не будет возвращён последний элемент. Этого, правда, не видно в байт-коде из-за оптимизаций, вносимых интерпретатором.

#tips #cycles