เนมสเปซ (Namespace) เป็นกลไกที่ใช้ในการกำหนดขอบเขต (Scope) ของตัวแปร ใน Python ทุกแพ็กเกจ โมดูล คลาส ฟังก์ชัน และเมธอด จะมี "เนมสเปซ" ของตัวเอง ซึ่งเป็นบริบทที่ชื่อตัวแปรถูกค้นหาและแก้ไข
การทำงานของเนมสเปซ
เมื่อฟังก์ชัน โมดูล หรือแพ็กเกจ เริ่มทำงาน (Evaluated) เนมสเปซใหม่จะถูกสร้างขึ้น คล้ายกับ "บริบทการประเมินค่า" (Evaluation Context) เมื่อการทำงานสิ้นสุด เนมสเปซจะถูกทิ้ง และตัวแปรภายในก็จะหายไป พร้อมกับมี "เนมสเปซสากล" (Global Namespace) ที่จะถูกใช้เมื่อไม่พบชื่อตัวแปรในเนมสเปซท้องถิ่น (Local Namespace)
ลำดับการค้นหาตัวแปร
Python จะตรวจสอบชื่อตัวแปรในลำดับดังนี้:
- เนมสเปซท้องถิ่น (Local Namespace): ภายในฟังก์ชัน โมดูล หรือคลาสที่กำลังทำงานอยู่
- เนมสเปซสากล (Global Namespace): ระดับโมดูลหรือสคริปต์หลัก
- เนมสเปซสร้างไว้ (Built-in Namespace): ฟังก์ชันและข้อยกเว้นพื้นฐานของ Python เช่น
print,len,Exception
การสร้างตัวแปร
โดยปกติ ตัวแปรจะถูกสร้างขึ้นในเนมสเปซท้องถิ่นเท่านั้น คำสั่ง global และ nonlocal ช่วยให้สามารถสร้างหรือแก้ไขตัวแปรในเนมสเปซระดับนอกได้