Python'un kapsam belirleme kurallarını sormuyorum; Genelde döngülerin Python'da kapsamlandırmanın nasıl çalıştığını anlıyorum . Benim sorum, tasarım kararlarının neden bu şekilde verildiğidir. Örneğin (amaçlanan kelime yok):
for foo in xrange(10):
bar = 2
print(foo, bar)
Yukarıdakiler yazdırılacaktır (9,2).
Bu bana garip geldi: 'foo' gerçekten sadece döngüyü kontrol ediyor ve döngü içinde 'bar' tanımlandı. Neden 'bar' döngü dışında erişilebilir olması gerektiğini anlayabilirim (aksi takdirde, döngüler çok sınırlı işlevsellik olurdu). Anlamadığım şey, kontrol değişkeninin döngü çıktıktan sonra neden kapsamda kalmasının gerekli olduğudur. Deneyimlerime göre, küresel ad alanını tıkar ve diğer dillerdeki tercümanlar tarafından yakalanacak hataları izlemeyi zorlaştırır.
for
Döngünün global ad alanınızı karıştırmasını istemiyorsanız, bir işleve sarın. Kapanışlar bolca!