Scope Resolution trong Python liên quan đến việc xác định nơi mà một tên (biến, hàm, lớp, v.v.) có thể được truy cập trong chương trình. Nó giúp xác định ngữ cảnh mà tên đó có hiệu lực và cách mà Python xác định giá trị của tên khi có nhiều nơi mà tên đó có thể tồn tại.

Các khái niệm liên quan đến Scope

Trong Python, có bốn loại phạm vi chính:

  1. Local Scope (Phạm vi cục bộ): Phạm vi bên trong một hàm hoặc một phương thức. Biến được định nghĩa trong một hàm chỉ có thể được truy cập trong hàm đó.
def my_function():
    local_var = 10  # Biến cục bộ
    print(local_var)

my_function()  # In ra 10
# print(local_var)  # Gây lỗi: local_var không được định nghĩa ở đây
  1. Enclosing Scope (Phạm vi bao quanh): Phạm vi của các hàm lồng nhau. Một hàm bên trong có thể truy cập vào các biến của hàm bao quanh.
def outer_function():
    outer_var = 20  # Biến của hàm bao quanh

    def inner_function():
        print(outer_var)  # Truy cập vào biến của hàm bao quanh

    inner_function()

outer_function()  # In ra 20
  1. Global Scope (Phạm vi toàn cục): Biến được định nghĩa ở cấp độ cao nhất của tệp, bên ngoài bất kỳ hàm nào, có thể được truy cập từ bất kỳ đâu trong mã.
global_var = 30  # Biến toàn cục

def my_function():
    print(global_var)  # Truy cập biến toàn cục

my_function()  # In ra 30
  1. Built-in Scope (Phạm vi tích hợp sẵn): Là phạm vi chứa các tên tích hợp sẵn của Python, có thể truy cập ở bất kỳ đâu trong mã. Ví dụ, các hàm như print()len() thuộc về phạm vi này.
print(len("Hello"))  # In ra 5, truy cập vào hàm tích hợp sẵn len

Kết luận

Scope Resolution là một phần quan trọng trong Python giúp quản lý và xác định ngữ cảnh của các biến và tên khác. Việc hiểu rõ các loại phạm vi khác nhau sẽ giúp bạn viết mã rõ ràng hơn và tránh được các lỗi không mong muốn.