ฉันไม่ได้ถามเกี่ยวกับกฎการกำหนดขอบเขตของไพ ธ อน ฉันเข้าใจโดยทั่วไปว่าการกำหนดขอบเขตทำงานใน Python สำหรับลูป คำถามของฉันคือทำไมการตัดสินใจออกแบบในลักษณะนี้ ตัวอย่างเช่น (ไม่มีการเล่นสำนวนเจตนา):
for foo in xrange(10):
bar = 2
print(foo, bar)
ด้านบนจะพิมพ์ (9,2)
สิ่งนี้ทำให้ฉันแปลกประหลาด: 'foo' เป็นเพียงการควบคุมวงและ 'บาร์' ถูกกำหนดไว้ในวง ฉันสามารถเข้าใจได้ว่าทำไมมันอาจจำเป็นสำหรับ 'บาร์' ที่จะสามารถเข้าถึงได้นอกลูป (มิฉะนั้นสำหรับลูปจะมีฟังก์ชันที่ จำกัด มาก) สิ่งที่ฉันไม่เข้าใจคือสาเหตุที่ตัวแปรควบคุมยังคงอยู่ในขอบเขตหลังจากวนออก จากประสบการณ์ของฉันมันเพียงแค่ตัดเนมสเปซส่วนกลางและทำให้การติดตามข้อผิดพลาดที่ล่ามในภาษาอื่น ๆ ทำได้ยากขึ้น
for
ลูปกระทบกับเนมสเปซส่วนกลางของคุณให้ห่อในฟังก์ชัน ปิดเยอะแยะ!