Biến toàn cầu
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ầu được gọi là biến toàn cầu. Điều này có nghĩa là một biến toàn cầu 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ầu được tạo ra trong Python.
Ví dụ 1: Tạo một biến toàn cầu
x = "global"
def foo[]:
print["x inside:", x]
foo[]
print["x outside:", x]
Đầu ra
x inside: global x outside: global
Trong mã trên, chúng tôi đã tạo X như một biến toàn cầu và xác định
x inside: global x outside: global9 để in biến x toàn cầu x. Cuối cùng, chúng tôi gọi
x inside: global x outside: global9 sẽ in giá trị của x.
Điều gì sẽ 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: local variable 'x' referenced before assignment
Trong mã trên, chúng tôi đã tạo X như một biến toàn cầu và xác định
x inside: global x outside: global9 để in biến x toàn cầu x. Cuối cùng, chúng tôi gọi
x inside: global x outside: global9 sẽ in giá trị của x.
Điều gì sẽ xảy ra nếu bạn muốn thay đổi giá trị của x bên trong một hàm?
Đầu ra cho thấy một lỗi vì Python coi X là biến cục bộ và X cũng không được xác định bên trong x inside: global
x outside: global
9.
Để thực hiện công việc này, chúng tôi sử dụng từ khóa
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2. Truy cập từ khóa toàn cầu Python để tìm hiểu thêm.Các biến cục bộ
def foo[]:
y = "local"
foo[]
print[y]
Đầu ra
NameError: name 'y' is not defined
Trong mã trên, chúng tôi đã tạo X như một biến toàn cầu và xác định
x inside: global x outside: global9 để in biến x toàn cầu x. Cuối cùng, chúng tôi gọi
x inside: global x outside: global9 sẽ in giá trị của x.
Điều gì sẽ xảy ra nếu bạn muốn thay đổi giá trị của x bên trong một hàm?
Đầu ra cho thấy một lỗi vì Python coi X là biến cục bộ và X cũng không được xác định bên trong x inside: global
x outside: global
9.
Để thực hiện công việc này, chúng tôi sử dụng từ khóa
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2. Truy cập từ khóa toàn cầu Python để tìm hiểu thêm.def foo[]:
y = "local"
print[y]
foo[]
Đầu ra
local
Trong mã trên, chúng tôi đã tạo X như một biến toàn cầu và xác định
x inside: global x outside: global9 để in biến x toàn cầu x. Cuối cùng, chúng tôi gọi
x inside: global x outside: global9 sẽ in giá trị của x.
Điều gì sẽ xảy ra nếu bạn muốn thay đổi giá trị của x bên trong một hàm?
Đầu ra cho thấy một lỗi vì Python coi X là biến cục bộ và X cũng không được xác định bên trong
x inside: global x outside: global9.
Để thực hiện công việc này, chúng tôi sử dụng từ khóa x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2. Truy cập từ khóa toàn cầu Python để tìm hiểu thêm.
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
x = "global "
def foo[]:
global x
y = "local"
x = x * 2
print[x]
print[y]
foo[]
Đầu ra
global global local
Trong mã trên, chúng tôi đã tạo X như một biến toàn cầu và xác định
x inside: global x outside: global9 để in biến x toàn cầu x. Cuối cùng, chúng tôi gọi
x inside: global x outside: global9 sẽ in giá trị của x.
Điều gì sẽ xảy ra nếu bạn muốn thay đổi giá trị của x bên trong một hàm?
Đầu ra cho thấy một lỗi vì Python coi X là biến cục bộ và X cũng không được xác định bên trong x inside: global
x outside: global
9.
x inside: global x outside: global0
Đầu ra
x inside: global x outside: global1
Trong mã trên, chúng tôi đã tạo X như một biến toàn cầu và xác định
x inside: global x outside: global9 để in biến x toàn cầu x. Cuối cùng, chúng tôi gọi
x inside: global x outside: global9 sẽ in giá trị của x.
Điều gì sẽ xảy ra nếu bạn muốn thay đổi giá trị của x bên trong một hàm?
Đầu ra cho thấy một lỗi vì Python coi X là biến cục bộ và X cũng không được xác định bên trong
x inside: global x outside: global9.
Để thực hiện công việc này, chúng tôi sử dụng từ khóa x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2. Truy cập từ khóa toàn cầu Python để tìm hiểu thêm.
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
Các biến cục bộ
Một biến được khai báo bên trong cơ thể 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
Đầu ra cho thấy một 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ầu trong khi biến cục bộ chỉ hoạt động bên trong x inside: global
x outside: global
9 hoặc phạm vi cục bộ.
x inside: global x outside: global2
Đầu ra
x inside: global x outside: global3
Trong mã trên, chúng tôi đã tạo X như một biến toàn cầu và xác định
x inside: global x outside: global9 để in biến x toàn cầu x. Cuối cùng, chúng tôi gọi
x inside: global x outside: global9 sẽ in giá trị của x.
Điều gì sẽ xảy ra nếu bạn muốn thay đổi giá trị của x bên trong một hàm? : If we change the value of a nonlocal variable, the changes appear in the local variable.
Trong Python và hầu hết các ngôn ngữ lập trình, các biến được khai báo bên ngoài một hàm được gọi là các biến toàn cầu. Bạn có thể truy cập các biến như vậy bên trong và bên ngoài một hàm, vì chúng có phạm vi toàn cầu. Đây là một ví dụ về biến toàn cầu: Biến x inside: global
x outside: global
4
2 trong mã trên được khai báo bên ngoài hàm: def foo[]:
y = "local"
foo[]
print[y]
3.def foo[]:
y = "local"
foo[]
print[y]
Sử dụng chức năng
def foo[]:
y = "local"
foo[]
print[y]
4, chúng tôi vẫn có thể truy cập def foo[]:
y = "local"
foo[]
print[y]
2 vì nó được khai báo trong phạm vi toàn cầu.Chúng ta hãy xem một ví dụ khác cho thấy những gì xảy ra khi chúng ta khai báo một biến bên trong một hàm và cố gắng truy cập nó ở nơi khác.
x inside: global x outside: global5
Trong ví dụ trên, chúng tôi đã khai báo
def foo[]:
y = "local"
foo[]
print[y]
2 bên trong một hàm và cố gắng truy cập nó trong một chức năng khác. Điều này dẫn đến một nameerror vì def foo[]:
y = "local"
foo[]
print[y]
2 không được xác định trên toàn cầu.Các biến được xác định bên trong các hàm được gọi là biến cục bộ. Giá trị của chúng chỉ có thể được sử dụng trong hàm nơi chúng được khai báo.
Bạn có thể thay đổi phạm vi của biến cục bộ bằng cách sử dụng từ khóa
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2 - mà chúng ta sẽ thảo luận trong phần tiếp theo.Từ khóa x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2 được sử dụng cho trong Python là gì?
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
Từ khóa toàn cầu chủ yếu được sử dụng vì hai lý do:
- Để sửa đổi giá trị của một biến toàn cầu.
- Để làm cho một biến cục bộ có thể truy cập bên ngoài phạm vi địa phương.
Hãy xem xét một số ví dụ cho từng kịch bản để giúp bạn hiểu rõ hơn.
Ví dụ #1 - Sửa đổi biến toàn cầu bằng cách sử dụng từ khóa x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
Trong phần cuối cùng mà chúng tôi đã khai báo một biến toàn cầu, chúng tôi đã không cố gắng thay đổi giá trị của biến. Tất cả những gì chúng tôi đã làm là truy cập và in giá trị của nó trong một hàm.
Hãy thử và thay đổi giá trị của biến toàn cầu và xem điều gì sẽ xảy ra:
x inside: global x outside: global6
Như bạn có thể thấy ở trên, khi chúng tôi cố gắng thêm 2 vào giá trị của
def foo[]:
y = "local"
foo[]
print[y]
2, chúng tôi đã gặp lỗi. Điều này là do chúng tôi chỉ có thể truy cập nhưng không sửa đổi def foo[]:
y = "local"
foo[]
print[y]
2.Để khắc phục điều đó, chúng tôi sử dụng biến
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2. Đây là cách:x inside: global x outside: global7
Sử dụng từ khóa
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2 trong mã ở trên, chúng tôi có thể sửa đổi def foo[]:
y = "local"
foo[]
print[y]
2 và thêm 2 vào giá trị ban đầu của nó.Ví dụ #2 - Cách thực hiện một biến cục bộ có thể truy cập bên ngoài phạm vi cục bộ bằng cách sử dụng từ khóa x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
Khi chúng tôi tạo một biến bên trong một hàm, không thể sử dụng giá trị của nó bên trong một hàm khác vì trình biên dịch không nhận ra biến.
Đây là cách chúng tôi có thể khắc phục điều đó bằng cách sử dụng từ khóa
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2:x inside: global x outside: global8
Để có thể truy cập
def foo[]:
y = "local"
foo[]
print[y]
2 có thể truy cập được ngoài phạm vi cục bộ của nó, chúng tôi đã khai báo nó bằng cách sử dụng từ khóa x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2: def foo[]:
y = "local"
print[y]
foo[]
0.Sau đó, chúng tôi đã gán một giá trị cho
def foo[]:
y = "local"
foo[]
print[y]
2. Sau đó chúng tôi đã gọi chức năng mà chúng tôi đã sử dụng để khai báo nó: def foo[]:
y = "local"
print[y]
foo[]
2Khi chúng tôi gọi hàm
def foo[]:
y = "local"
foo[]
print[y]
4, in giá trị của def foo[]:
y = "local"
foo[]
print[y]
2 được khai báo trong hàm def foo[]:
y = "local"
print[y]
foo[]
2, chúng tôi đã không gặp lỗi vì def foo[]:
y = "local"
foo[]
print[y]
2 có phạm vi toàn cầu.Bản tóm tắt
Trong bài viết này, chúng tôi đã nói về các biến toàn cầu và địa phương trong Python.
Các ví dụ cho thấy cách khai báo cả biến toàn cầu và địa phương.
Chúng tôi cũng đã nói về từ khóa
x = "global"
def foo[]:
x = x * 2
print[x]
foo[]
2 cho phép bạn sửa đổi giá trị của biến toàn cầu hoặc làm cho biến cục bộ có thể truy cập được ngoài phạm vi của nó.Mã hóa hạnh phúc!
Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu