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

ขอบเขตตัวแปรทำงานในโมดูล Python อย่างไร


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

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

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

L, ท้องถิ่น — ชื่อที่กำหนดในทางใดทางหนึ่งภายในฟังก์ชัน (หรือแลมบ์ดา) และไม่ประกาศโกลบอลในฟังก์ชันนั้น

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

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

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