Trong Python, từ khóa nonlocal
được giới thiệu trong phiên bản 3.0 và được sử dụng để chỉ định rằng một biến không phải là biến toàn cục và không thuộc phạm vi của hàm đang thực thi. Thay vào đó, nó thuộc về một hàm bao bọc, tức là hàm chứa hàm hiện tại. Việc sử dụng nonlocal
rất hữu ích khi bạn cần thay đổi giá trị của một biến từ một hàm bên trong mà không muốn định nghĩa lại nó như là một biến cục bộ.
nonlocal
?Sử dụng nonlocal
giúp bạn có thể làm việc với các biến trong không gian tên (namespace) của một hàm bao bọc mà không cần phải định nghĩa lại biến đó như là một biến cục bộ. Điều này thường xảy ra trong các hàm lồng nhau, nơi bạn muốn truy cập và sửa đổi một biến của hàm bên ngoài.
nonlocal
Dưới đây là một ví dụ cụ thể để minh họa cách sử dụng nonlocal
:
def outer_function(): count = 0 # Biến trong hàm bao bọc def inner_function(): nonlocal count # Tham chiếu đến biến count trong hàm bao bọc count += 1 # Thay đổi giá trị của count return count return inner_function # Trả về hàm con # Tạo một đối tượng hàm counter = outer_function() # Gọi hàm con và in kết quả print(counter()) # Output: 1 print(counter()) # Output: 2 print(counter()) # Output: 3
outer_function
định nghĩa một biến count
và một hàm con inner_function
.inner_function
, từ khóa nonlocal
cho phép bạn truy cập và sửa đổi biến count
trong không gian tên của outer_function
.counter()
, giá trị của count
sẽ tăng lên 1.nonlocal
?Từ khóa nonlocal
là một công cụ mạnh mẽ giúp bạn quản lý biến trong các hàm lồng nhau mà không cần phải sử dụng biến toàn cục. Điều này làm cho mã trở nên rõ ràng và dễ quản lý hơn.