Không gian tên trong Python là gì?
Khái niệm không gian tên
Không gian tên là một tập hợp các tên. Python thực hiện các không gian tên dưới dạng từ điển. Một vùng tên cho phép chúng ta có các tên riêng cho mỗi đối tượng. Không gian tên cho phép chúng ta phân nhóm các thực thể như class, object, function thành những nhóm riêng biệt, mỗi nhóm đó được đặt cho một cái tên, gọi là không gian tên (namespace).
Ví dụ về không gian tên
Nói một cách dễ hiểu, bạn có thể hiểu một cách đơn giản, vai trò của vùng không gian tên trong Python cũng tương tự như họ trong tên của chúng ta. Giả sử, sẽ có rất nhiều người mang tên “Tom” trong cùng một lớp, nhưng sẽ chỉ có một “Tom Hanks” duy nhất, đây sẽ là yếu tố giúp ta phân biệt và xác định giữa nhiều đối tượng mang tên Tom khác nhau.
Trình thông dịch trong Python cũng làm điều tương tự để hiểu rõ các phương thức hoặc biến chính xác mà một mã đang xác định. Bản thân không gian tên trong Python cũng được chia nhỏ thành tên (định danh duy nhất)+ khoảng trắng (liên quan đến phạm vi). Tên có thể là bất cứ thứ gì từ tên phương thức đến biến và khoảng trống phụ thuộc vào vị trí mà bạn cố gắng truy cập.
>>> Xem thêm: Định danh trong Python - Cách đặt tên các biến trong Python
Các loại không gian tên trong Python
Các loại không gian tên trong Python
Về cơ bản, có ba loại không gian tên trong Python
1.Local namespace
Không gian tên này bao gồm các hàm và tên ngoại lệ được tích hợp sẵn trong Python.
2. Global namespace
Không gian tên này bao gồm tên từ các mô-đun được nhập trong dự án. Nó được tạo khi chúng ta bao gồm mô-đun và nó kéo dài cho đến khi tập lệnh kết thúc.
3. Local namespace
Các tên cục bộ bên trong hàm nằm dưới một vùng tên cục bộ. Không gian tên này được tạo khi hàm được gọi và phạm vi kết thúc khi giá trị được trả về.
>>>: Tham khảo: Các khóa học lập trình Python
Phạm vi trong Python
Khái niệm phạm vi trong Python
Với không gian tên, ta có thể xác định tất cả các tên bên trong một chương trình. Tuy nhiên, điều này không có nghĩa là chúng ta có thể sử dụng tên biến ở bất kỳ đâu. Các biến này cũng chỉ có thể được sử dụng trong một số phạm vi trong chương trình. Chúng ta có thể truy cập trực tiếp các biến mà không cần bất kỳ tiền tố nào khi chúng ở trong không gian tên.
Thời gian tồn tại của một không gian tên trong Python phụ thuộc vào phạm vi của các đối tượng. Khi phạm vi của một đối tượng kết thúc, thời gian tồn tại của không gian tên cũng kết thúc. Vì vậy, chúng ta không thể truy cập các đối tượng của phạm vi không gian tên bên trong từ một không gian tên bên ngoài.
Các loại phạm vi
Các loại phạm vi trong Python
Python có các phạm vi sau:
Khi một tên được tham chiếu trong Python , trình thông dịch sẽ tìm kiếm tên trong không gian tên bắt đầu từ phạm vi nhỏ nhất trong sơ đồ và dần dần di chuyển đến phạm vi ngoài cùng.
- Local Scope - Phạm vi cục bộ, là phạm vi trong cùng chứa danh sách các tên cục bộ chỉ có sẵn trong hàm.
- Enclosing Scope - Phạm vi bao quanh được nhìn thấy trong các hàm lồng nhau nơi tên được tìm kiếm trong hàm bên ngoài gần nhất.
- Global Scope- Phạm vi toàn cục là phạm vi cấp mô-đun. Khi chúng tôi nhập các mô-đun, chúng sẽ được thêm vào phạm vi toàn cầu.
- BuiltIn Scope - Phạm vi ngoài cùng là phạm vi tên dựng sẵn. Trình thông dịch tìm kiếm các tên trong phạm vi này cuối cùng.
Ví dụ về không gian tên trong Python
#var1 is in the global namespace
var1 = 5
def function():
# var2 is in the local namespace
var2 = 6
def inner_function():
# var3 is in the nested local
# namespace
var3 = 7
Trong ví dụ này, var1 được khai báo trong không gian tên chung bởi vì nó không nằm trong bất kỳ hàm nào. Vì vậy, nó có thể truy cập ở mọi nơi trong script. var2 nằm bên trong hàm (). Vì vậy, nó chỉ có thể được truy cập bên trong hàm () và bên ngoài hàm, nó không còn tồn tại. var3 cũng có một phạm vi cục bộ, hàm được lồng vào nhau và chúng ta chỉ có thể sử dụng var3 bên trong inner_ functions ().
Kết luận: Bài viết trên đã giới thiệu về không gian tên và phạm vi trong Python. Hy vọng các thông tin sẽ hữu ích cho quá trình lập trình của bạn. Tìm hiểu thêm về Python và các ngôn ngữ lập trình khác qua các khóa học lập trình của T3H.
Nguồn Techvidvan