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

Namespaces และ Scope ใน Python


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

ต่อไปนี้คือสามหมวดหมู่ของ namespace:

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

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

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

Namespaces และ Scope ใน Python

Scope ใน Python

Namespace มี lifetime เมื่อมันพร้อมใช้งาน นั่นก็คือ scope นอกจากนี้ scope จะขึ้นอยู่กับภูมิภาคการเขียนโค้ดที่ตัวแปรหรือออบเจ็กต์ตั้งอยู่ คุณสามารถเห็นในโปรแกรมด้านล่างว่าตัวแปรที่ประกาศใน inner loop พร้อมใช้งานสำหรับ outer loop แต่ไม่ใช่ในทางกลับกัน โปรดสังเกตว่าชื่อของ outer function ยังกลายเป็นส่วนหนึ่งของ global variable

ตัวอย่าง

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