Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Không gian tên (Namespace) và Phạm vi (Scope) trong Python


Trong Python, biến, hàm, thư viện, module... có thể trùng tên. Namespace quản lý cách các tên này được tổ chức. Có 3 loại namespace:

  • Local Namespace: Chứa tên biến/hàm khai báo trong chương trình. Tồn tại trong khi chương trình chạy.
  • Global Namespace: Chứa tên từ các module được import. Bao gồm Local Namespace.
  • Built-in Namespace: Cấp cao nhất, chứa tên mặc định của interpreter Python. Bao gồm Global Namespace.

Không gian tên (Namespace) và Phạm vi (Scope) trong Python

Phạm vi (Scope) trong Python

Namespace có vòng đời (scope). Scope phụ thuộc vào vùng code nơi biến/đối tượng nằm. Ví dụ dưới đây cho thấy biến trong hàm trong (inner) không truy cập được từ hàm ngoài (outer), nhưng ngược lại thì được. Tên hàm ngoài cũng trở thành biến toàn cục.

Ví dụ

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')

Kết quả:

Đầu ra

['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