Namespace = ระบบ Mapping จาก "ชื่อ" (Name) ไปยัง "อ็อบเจกต์" (Object) ใช้แก้ปัญหาชื่อชนกัน
ลักษณะสำคัญ
- แต่ละ Package, Module, Class, Function, Method มี Namespace ของตัวเอง
- สร้างขึ้นตอนเริ่ม Execute, หายตอนจบ Execution
- คิดเป็น "Evaluation Context" หรือ "Symbol Table"
ประเภท Namespace
- Built-in Namespace: คำสั่งพื้นฐาน (
print,len,Exception) - สร้างตอน Start Interpreter - Global Namespace: ระดับ Module (Script หลัก) - สร้างตอน Run Module
- Local Namespace: ภายใน Function/Class - สร้างตอน Call Function
การค้นหาชื่อ (Name Resolution)
Python ค้นหาตามลำดับ: Local → Enclosing → Global → Built-in (LEGB)
การสร้างตัวแปร
- Assignment (
x = 1) → สร้างใน Local Namespace ปกติ global x→ สร้าง/แก้ไขใน Global Namespacenonlocal x→ สร้าง/แก้ไขใน Enclosing Namespace
Note: Namespace ถูก Implement ด้วย Dictionary (Hash Table) ใน CPython