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

เนมสเปซและการกำหนดขอบเขตใน Python


ตัวแปรคือชื่อ (ตัวระบุ) ที่แมปกับวัตถุ เนมสเปซคือพจนานุกรมของชื่อตัวแปร (คีย์) และอ็อบเจ็กต์ที่เกี่ยวข้อง (ค่า)

คำสั่ง Python สามารถเข้าถึงตัวแปรในเนมสเปซท้องถิ่นและในเนมสเปซส่วนกลาง หากตัวแปรท้องถิ่นและตัวแปรส่วนกลางมีชื่อเหมือนกัน ตัวแปรภายในจะบังตัวแปรส่วนกลาง

แต่ละฟังก์ชันมีเนมสเปซท้องถิ่นของตัวเอง เมธอดของคลาสใช้กฎการกำหนดขอบเขตเดียวกันกับฟังก์ชันทั่วไป

Python ทำการเดาอย่างมีการศึกษาว่าตัวแปรนั้นเป็นตัวแปรท้องถิ่นหรือระดับโลก โดยถือว่าตัวแปรใด ๆ ที่กำหนดค่าในฟังก์ชันนั้นเป็นแบบโลคัล

ดังนั้น ในการกำหนดค่าตัวแปรส่วนกลางภายในฟังก์ชัน คุณต้องใช้คำสั่งส่วนกลางก่อน

คำสั่ง global VarName บอก Python ว่า VarName เป็นตัวแปรส่วนกลาง Python หยุดค้นหาตัวแปรในเนมสเปซในเครื่อง

ตัวอย่างเช่น เรากำหนดตัวแปร Money ในเนมสเปซส่วนกลาง ภายในฟังก์ชัน Money เรากำหนดค่า Money ให้ ดังนั้น Python จะถือว่า Money เป็นตัวแปรในเครื่อง อย่างไรก็ตาม เราเข้าถึงค่าของตัวแปรท้องถิ่น Money ก่อนตั้งค่า ดังนั้น UnboundLocalError จึงเป็นผลลัพธ์ การไม่แสดงข้อคิดเห็นคำสั่งส่วนกลางช่วยแก้ปัญหาได้

#!/usr/bin/python
Money = 2000
def AddMoney():
# Uncomment the following line to fix the code:
# global Money
Money = Money + 1
print Money
AddMoney()
print Money