Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2012 16:13:41

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

Цикл for

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

Офлайн

#2 Окт. 3, 2012 16:30:09

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Цикл for

А декомпилятором то же самое можно, или он в for декомпилирует?

Офлайн

#3 Окт. 8, 2012 22:47:52

June
От:
Зарегистрирован: 2009-02-21
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for

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

Интересно. Спасибо большое!



Офлайн

#4 Окт. 9, 2012 03:32:17

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

Цикл for

люди зачем вникать во все это , на мой взглад все намного проще : насколько всем известно строку можно представить как массив из символов (из которых составлена строка) соответственно цикл видя строку как массив ее и перебирает как массив , а если уж интересны именно технические аспекты то 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 почитывая доки естессна , и тогда я думаю абсолютно все вопросы отпадут



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version