@ichernob

Что происходит за кулисами цикла for?

Есть такой кусочек кода:
first, second = u"one,two,three", u"four,five,six"
for word_first in set(first_str.split(',')):
    for word_second in set(second_str.split(',')):
        ...

Интересно, какие действия выполняются интерпретатором при прохождении цикла. Конкретно интересует, создает ли интерпретатор каждый раз при новой итерации внешнего цикла новый сет? И вообще, насколько это рационально, указывать для цикла такие выражения (типа set(first_str.split(','))?
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
На хабре есть отличнейший мануал "Code Like a Pythonista: Idiomatic Python". Перевод. Прочтите. Там есть ответы на многие Ваши вопросы, в том числе и на этот.

Вот цитата из этого мануала:
Объясню, как в действительности работает цикл for. Python смотрит на последовательность, указанную после ключевого слова in. Если это простой контейнер (как список, кортеж, словарь, множество или определенный пользователем), Python преобразует его в итератор. Если этот объект уже является итератором, Python использует непосредственно его.
Затем Python многократно вызывает метод итератора next, связывает возвращаемое значение со счетчиком цикла (i в этом случае), и выполняет код тела цикла. Этот процесс повторяется снова и снова, пока не будет вызвано исключение StopIteration или выполнена инструкция break в теле цикла.
Цикл for может включать условие else (иначе), код которого будет выполнен после выхода из цикла, но не после выполнения инструкции break. Эта особенность предоставляет очень изящные решения. Условие else не всегда и не часто используется с циклом for, но может нам пригодиться. Иногда else удачно выражает логику, которая вам нужна.


UPD:
Наткнулся на хорошую статью: Understanding Python's "for" statement
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
abs0lut
@abs0lut
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы