Форум сайта python.su
20
JuneЯ имел ввиду вопрос odnochlena - вы то насчет специфики iter() не спрашивали
Проще, если знаешь что искать.
. А вообще, если интересно, что и как там именно интеретируется:>>> def test(): ... x = "123" ... for x in x: ... print x ... >>> import dis >>> dis.dis(test) 3 0 LOAD_CONST 1 ('123') 3 STORE_FAST 0 (x) 4 6 SETUP_LOOP 19 (to 28) 9 LOAD_FAST 0 (x) 12 GET_ITER >> 13 FOR_ITER 11 (to 27) 16 STORE_FAST 0 (x) 5 19 LOAD_FAST 0 (x) 22 PRINT_ITEM 23 PRINT_NEWLINE 24 JUMP_ABSOLUTE 13 >> 27 POP_BLOCK >> 28 LOAD_CONST 0 (None) 31 RETURN_VALUE
Офлайн
14
А декомпилятором то же самое можно, или он в for декомпилирует?
Офлайн
0
EBFEJuneЯ имел ввиду вопрос odnochlena - вы то насчет специфики iter() не спрашивали ;). А вообще, если интересно, что и как там именно интеретируется:
Проще, если знаешь что искать.>>> def test(): ... x = "123" ... for x in x: ... print x ... >>> import dis >>> dis.dis(test) 3 0 LOAD_CONST 1 ('123') 3 STORE_FAST 0 (x) 4 6 SETUP_LOOP 19 (to 28) 9 LOAD_FAST 0 (x) 12 GET_ITER >> 13 FOR_ITER 11 (to 27) 16 STORE_FAST 0 (x) 5 19 LOAD_FAST 0 (x) 22 PRINT_ITEM 23 PRINT_NEWLINE 24 JUMP_ABSOLUTE 13 >> 27 POP_BLOCK >> 28 LOAD_CONST 0 (None) 31 RETURN_VALUE
Офлайн
14
люди зачем вникать во все это , на мой взглад все намного проще : насколько всем известно строку можно представить как массив из символов (из которых составлена строка) соответственно цикл видя строку как массив ее и перебирает как массив , а если уж интересны именно технические аспекты то py.user.next описал их вам , тоесть если сбацать так :
print iter("123")
<iterator object at 0xb735392c>
a = iter("123") print a.next() print a.next() print a.next()
1 2 3
Офлайн