Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

อธิบายเนมสเปซ python และขอบเขตของตัวแปร


เนมสเปซเป็นวิธีการปรับใช้ขอบเขต ใน Python แต่ละแพ็คเกจ โมดูล คลาส ฟังก์ชัน และฟังก์ชันเมธอดจะเป็นเจ้าของ "เนมสเปซ" ซึ่งแก้ไขชื่อตัวแปรได้ เมื่อมีการประเมินฟังก์ชัน โมดูล หรือแพ็คเกจ (กล่าวคือ เริ่มดำเนินการ) เนมสเปซจะถูกสร้างขึ้น คิดว่ามันเป็น "บริบทการประเมิน" เมื่อฟังก์ชัน ฯลฯ เสร็จสิ้นการดำเนินการ เนมสเปซจะหายไป ตัวแปรจะลดลง นอกจากนี้ยังมีเนมสเปซส่วนกลางที่ใช้หากชื่อนั้นไม่อยู่ในเนมสเปซในเครื่อง

ชื่อตัวแปรแต่ละตัวจะถูกตรวจสอบในเนมสเปซท้องถิ่น (เนื้อความของฟังก์ชัน โมดูล ฯลฯ) จากนั้นตรวจสอบในเนมสเปซส่วนกลาง

โดยทั่วไป ตัวแปรจะถูกสร้างขึ้นในเนมสเปซโลคัลเท่านั้น คำสั่ง global และ nonlocal สามารถสร้างตัวแปรนอกเหนือจากเนมสเปซในเครื่องได้

ต้องมีการแก้ไขขอบเขตเมื่อใช้ตัวแปรเพื่อกำหนดว่าค่าควรมาจากไหน การแก้ไขขอบเขตใน Python เป็นไปตามกฎ LEGB

L, Local — ชื่อที่กำหนดในลักษณะใดก็ตามภายในฟังก์ชัน (หรือแลมบ์ดา) และไม่ได้ประกาศให้เป็นสากลในฟังก์ชันนั้น

E, Enclosing-function locals — ชื่อในขอบเขตโลคัลของฟังก์ชันที่ปิดล้อมแบบสแตติกทั้งหมด (หรือ lambdas) จากด้านในสู่ด้านนอก

G, Global (โมดูล) — ชื่อที่กำหนดที่ระดับบนสุดของไฟล์โมดูล หรือโดยการดำเนินการคำสั่งส่วนกลางใน def ภายในไฟล์

B, Built-in (Python) — ชื่อที่กำหนดไว้ล่วงหน้าในโมดูลชื่อในตัว :open, range, SyntaxError เป็นต้น