Namespaces and Scoping
ชื่อตัวแปลในไพทอนถูกกำหนดไว้เพื่อไว้จับคู่ key และ value ของวัตถุซึ่ง namespace ก็คือ dictionary ที่ไว้จับคู่นั้นนั่นเอง
ในไพทอน สามารถใช้งานตัวแปลในลักษณะ local namespace และ global namespace ถ้า local และ global มีชื่อหมือนกัน ตัวแปล local จะถูกทับด้วย ตัวแปล global ใน ไพทอน 3 จะตั้งซ้ำไม่ได้
แต่ละฟังก์ชั่นจะเป็นเจ้าของของแต่ละ local namespace methods ของ Class ก็เป็นแบบนี้เหมือนกัน
ตัวแปลที่กำหนดใน ฟังก์ชั่น ไพทอน จะมองว่าเป็น local
อย่างไรก็ถามในการเรียงลำดับ การกำหนดตัวแปล global ในฟังก์ชั่น เราจำเป็นต้องใช้คำว่า global ตามด้วยตัวชื่อตัวแปล ที่ต้องการ เพื่อบอกให้ ไพทอนใช้ตัวแปล global แทน ตัวแปล local
ตัวอย่าง กำหนดชื่อตัวแปล varpython ในลัษณะเป็น global namespace และในฟังก์ชั่น
# ตัวอย่าง สอน Python ในเว็บ Mindphp.com
# ขอบเขตของ local และ global
varpython = 2012
def Addvarmindpython():
# Uncomment the following line to fix the code:
global varpython
varpython = varpython + 1
print (varpython)
Addvarmindpython ()
print (varpython)
ผลที่ได้
2012
2013
ทดสอบการทำงานเพิ่มเติมได้โดย comment
# global varpython
และลองรันใหม่อีกครั้งก็จะเกิด error ที่บรรทัด
varpython = varpython + 1
เพราะว่าเรายังไม่ได้มีการประกาศตัวแปรไว้แต่มีการเรียกใช้งาน