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

เนมสเปซและขอบเขตใน Python


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

ต่อไปนี้คือเนมสเปซสามหมวดหมู่

  • เนมสเปซท้องถิ่น:ชื่อฟังก์ชันและตัวแปรทั้งหมดที่ประกาศโดยโปรแกรมจะอยู่ในเนมสเปซนี้ เนมสเปซนี้มีอยู่ตราบใดที่โปรแกรมทำงาน

  • เนมสเปซสากล:เนมสเปซนี้เก็บชื่อฟังก์ชันและตัวแปรอื่น ๆ ทั้งหมดที่รวมอยู่ในโมดูลที่ใช้ในโปรแกรมหลาม ประกอบด้วยชื่อทั้งหมดที่เป็นส่วนหนึ่งของ Local namespace

  • เนมสเปซในตัว:นี่คือเนมสเปซระดับสูงสุดที่พร้อมใช้งานโดยมีชื่อเริ่มต้นซึ่งเป็นส่วนหนึ่งของล่ามหลามที่โหลดเป็นสภาพแวดล้อมการเขียนโปรแกรม มันรวม Global Namespace ซึ่งรวม Namespace ในเครื่อง

เนมสเปซและขอบเขตใน Python

ขอบเขตในภาษาไพทอน

เนมสเปซจะมีอายุการใช้งานเมื่อพร้อมใช้งาน ที่เรียกว่าขอบเขต ขอบเขตจะขึ้นอยู่กับขอบเขตการเข้ารหัสที่ตัวแปรหรืออ็อบเจกต์ตั้งอยู่ คุณสามารถเห็นในโปรแกรมด้านล่างว่าตัวแปรที่ประกาศในวงในนั้นมีให้สำหรับวงรอบนอกอย่างไร แต่ไม่ใช่ในทางกลับกัน นอกจากนี้ โปรดทราบว่าชื่อของฟังก์ชันภายนอกจะกลายเป็นส่วนหนึ่งของตัวแปรส่วนกลางอย่างไร

ตัวอย่าง

prog_var = 'Hello'
def outer_func():
   outer_var = 'x'
   def inner_func():
      inner_var = 'y'
      print(dir(), ' Local Variable in Inner function')

      inner_func()
      print(dir(), 'Local variables in outer function')

      outer_func()
      print(dir(), 'Global variables ')

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

['inner_var'] Local Variable in Inner function
['inner_func', 'outer_var'] Local variables in outer function
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'outer_func', 'prog_var'] Global variables