Saya tidak bertanya tentang aturan pelingkupan Python; Saya mengerti secara umum bagaimana pelingkupan bekerja di Python untuk loop. Pertanyaan saya adalah mengapa keputusan desain dibuat dengan cara ini. Misalnya (tidak ada permainan kata-kata):
for foo in xrange(10):
bar = 2
print(foo, bar)
Di atas akan dicetak (9,2).
Ini menurut saya aneh: 'foo' benar-benar hanya mengendalikan loop, dan 'bar' didefinisikan di dalam loop. Saya bisa mengerti mengapa mungkin perlu 'bar' untuk dapat diakses di luar loop (jika tidak, untuk loop akan memiliki fungsi yang sangat terbatas). Apa yang saya tidak mengerti adalah mengapa perlu untuk variabel kontrol untuk tetap berada dalam ruang lingkup setelah loop keluar. Dalam pengalaman saya, ini hanya mengacaukan namespace global dan membuatnya lebih sulit untuk melacak kesalahan yang akan ditangkap oleh penerjemah dalam bahasa lain.
for
loop mengacaukan namespace global Anda, bungkuslah dalam suatu fungsi. Closures berlimpah!