Các biến toàn cầu, cục bộ và phi địa phương trong Python (Có ví dụ)

Trong hướng dẫn này, bạn sẽ tìm hiểu về các biến Toàn cầu trong Python, Biến cục bộ, Biến phi địa phương và nơi sử dụng chúng.

Video: Biến cục bộ và toàn cầu trong Python

Biến toàn cục

Trong Python, một biến được khai báo bên ngoài hàm hoặc trong phạm vi toàn cục được gọi là biến toàn cục. Điều này có nghĩa là một biến toàn cục có thể được truy cập bên trong hoặc bên ngoài hàm.

Hãy xem một ví dụ về cách một biến toàn cục được tạo trong Python.

Ví dụ 1: Tạo một biến toàn cục

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Đầu ra

 x bên trong: toàn cầu x bên ngoài: toàn cầu

Trong đoạn mã trên, chúng ta đã tạo x làm biến toàn cục và định nghĩa a foo()để in biến toàn cục x. Cuối cùng, chúng tôi gọi foo()cái sẽ in ra giá trị của x.

Điều gì xảy ra nếu bạn muốn thay đổi giá trị của x bên trong một hàm?

 x = "global" def foo(): x = x * 2 print(x) foo()

Đầu ra

 UnboundLocalError: biến cục bộ 'x' được tham chiếu trước khi gán

Kết quả đầu ra hiển thị lỗi vì Python coi x là một biến cục bộ và x cũng không được xác định bên trong foo().

Để làm cho điều này hoạt động, chúng tôi sử dụng globaltừ khóa. Truy cập Từ khóa toàn cầu Python để tìm hiểu thêm.

Biến cục bộ

Một biến được khai báo bên trong thân của hàm hoặc trong phạm vi cục bộ được gọi là biến cục bộ.

Ví dụ 2: Truy cập biến cục bộ bên ngoài phạm vi

 def foo(): y = "local" foo() print(y)

Đầu ra

 NameError: tên 'y' không được xác định

Đầu ra hiển thị lỗi vì chúng tôi đang cố gắng truy cập một biến cục bộ y trong phạm vi toàn cục trong khi biến cục bộ chỉ hoạt động bên trong foo()hoặc phạm vi cục bộ.

Hãy xem một ví dụ về cách một biến cục bộ được tạo trong Python.

Ví dụ 3: Tạo một biến cục bộ

Thông thường, chúng ta khai báo một biến bên trong hàm để tạo một biến cục bộ.

 def foo(): y = "local" print(y) foo()

Đầu ra

 địa phương

Hãy xem xét vấn đề trước đó, trong đó x là một biến toàn cục và chúng ta muốn sửa đổi x bên trong foo().

Biến cục bộ và toàn cục

Ở đây, chúng tôi sẽ trình bày cách sử dụng biến toàn cục và biến cục bộ trong cùng một đoạn mã.

Ví dụ 4: Sử dụng các biến Toàn cục và Cục bộ trong cùng một mã

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Đầu ra

 địa phương toàn cầu toàn cầu

Trong đoạn mã trên, chúng ta khai báo x là toàn cục và y là biến cục bộ trong foo(). Sau đó, chúng tôi sử dụng toán tử nhân *để sửa đổi biến tổng thể x và chúng tôi in ra cả x và y.

Sau khi gọi hàm foo(), giá trị của x trở thành global globalvì chúng ta đã sử dụng dấu x * 2để in hai lần global. Sau đó, chúng ta in giá trị của biến cục bộ y tức là local.

Ví dụ 5: Biến toàn cục và biến cục bộ có cùng tên

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Đầu ra

 cục bộ x: 10 toàn cầu x: 5

Trong đoạn mã trên, chúng tôi đã sử dụng cùng một tên x cho cả biến toàn cục và biến cục bộ. Chúng ta nhận được một kết quả khác khi chúng ta in cùng một biến vì biến được khai báo trong cả hai phạm vi, tức là phạm vi cục bộ bên trong foo()và phạm vi toàn cục bên ngoài foo().

When we print the variable inside foo() it outputs local x: 10. This is called the local scope of the variable.

Similarly, when we print the variable outside the foo(), it outputs global x: 5. This is called the global scope of the variable.

Nonlocal Variables

Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.

Let's see an example of how a nonlocal variable is used in Python.

We use nonlocal keywords to create nonlocal variables.

Example 6: Create a nonlocal variable

 def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()

Output

 inner: nonlocal outer: nonlocal

Trong đoạn mã trên, có một inner()hàm lồng nhau . Chúng tôi sử dụng nonlocaltừ khóa để tạo biến phi địa phương. Các inner()chức năng được xác định trong phạm vi chức năng khác outer().

Lưu ý : Nếu chúng ta thay đổi giá trị của một biến phi địa phương, những thay đổi sẽ xuất hiện trong biến cục bộ.

thú vị bài viết...