Nie pytam o reguły zakresu Pythona; Ogólnie rozumiem, jak działa określanie zakresu w Pythonie dla pętli. Moje pytanie brzmi, dlaczego decyzje projektowe były podejmowane w ten sposób. Na przykład (gra słów nie przeznaczona):
for foo in xrange(10):
bar = 2
print(foo, bar)
Powyższe wydrukuje (9,2).
Wydaje mi się to dziwne: „foo” tak naprawdę kontroluje pętlę, a „bar” został zdefiniowany wewnątrz pętli. Rozumiem, dlaczego może być konieczne, aby „bar” był dostępny poza pętlą (w przeciwnym razie pętle miałyby bardzo ograniczoną funkcjonalność). Nie rozumiem, dlaczego zmienna sterująca musi pozostać w zakresie po wyjściu pętli. Z mojego doświadczenia wynika, że po prostu zaśmieca to globalną przestrzeń nazw i utrudnia wyśledzenie błędów, które zostałyby wyłapane przez tłumaczy w innych językach.
for
pętla zaśmiecała Twoją globalną przestrzeń nazw, zawiń ją w funkcję. Mnóstwo zamknięć!