Найти - Пользователи
Полная версия: Цикл for
Начало » Python для новичков » Цикл for
1 2
EBFE
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
odnochlen
А декомпилятором то же самое можно, или он в for декомпилирует?
June
EBFE
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

Интересно. Спасибо большое!
@cckyi_boxxx
люди зачем вникать во все это , на мой взглад все намного проще : насколько всем известно строку можно представить как массив из символов (из которых составлена строка) соответственно цикл видя строку как массив ее и перебирает как массив , а если уж интересны именно технические аспекты то 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
вроде все обьяснил , ну а если есть желание получше понять что такое итератор потыкайте модуль itertools почитывая доки естессна , и тогда я думаю абсолютно все вопросы отпадут
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB