Я не спрашиваю о правилах Python; Я вообще понимаю, как работает цикл в Python для циклов. Мой вопрос, почему дизайнерские решения были приняты таким образом. Например (не каламбур):
for foo in xrange(10):
bar = 2
print(foo, bar)
Выше будет напечатано (9,2).
Это кажется мне странным: 'foo' на самом деле просто контролирует цикл, а 'bar' был определен внутри цикла. Я могу понять, почему может быть необходимо, чтобы 'bar' был доступен вне цикла (в противном случае цикл имел бы очень ограниченную функциональность). Я не понимаю, почему управляющая переменная должна оставаться в области видимости после выхода из цикла. По моему опыту, это просто загромождает глобальное пространство имен и усложняет отслеживание ошибок, которые могут быть обнаружены переводчиками на других языках.
for
цикл загромождал ваше глобальное пространство имен, поместите его в функцию. Затворы в изобилии!