Namespace trong Python là một không gian tên mà trong đó các tên (biến, hàm, lớp, v.v.) được ánh xạ đến các đối tượng. Nó có thể được hiểu là một tập hợp các tên được quản lý và phân biệt riêng biệt. Việc sử dụng namespace giúp tránh xung đột tên và tạo ra các phạm vi khác nhau cho các biến và hàm, từ đó làm cho mã trở nên dễ đọc và bảo trì hơn.
Python có một số loại namespace khác nhau, được phân loại theo phạm vi sử dụng:
print()
, len()
, int()
, v.v. Namespace này có sẵn cho tất cả các chương trình Python.Dưới đây là một ví dụ minh họa về các loại namespace trong Python:
# Biến toàn cục global_variable = "I am global" def my_function(): # Biến cục bộ local_variable = "I am local" print(local_variable) # Kết quả: I am local print(global_variable) # Kết quả: I am global my_function() # Thử truy cập biến cục bộ bên ngoài hàm # print(local_variable) # Gây lỗi: NameError: name 'local_variable' is not defined # Truy cập biến toàn cục print(global_variable) # Kết quả: I am global
global_variable
được định nghĩa bên ngoài bất kỳ hàm nào, vì vậy nó có thể được truy cập từ bất kỳ nơi nào trong chương trình.local_variable
được định nghĩa bên trong my_function
, do đó nó chỉ có thể được truy cập từ trong hàm đó. Nếu bạn cố gắng truy cập nó từ bên ngoài hàm, bạn sẽ gặp lỗi NameError
.Python sử dụng quy tắc LEGB (Local, Enclosing, Global, Built-in) để tìm kiếm tên:
Namespace trong Python là một khái niệm quan trọng giúp tổ chức và quản lý tên trong chương trình. Việc sử dụng namespace giúp tránh xung đột tên, tổ chức mã rõ ràng hơn và quản lý phạm vi của các biến và hàm một cách hiệu quả. Hãy ghi nhớ các loại namespace và quy tắc LEGB để tận dụng tốt hơn trong lập trình Python!