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à biến toàn cục. 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ục.
Đây là một ví dụ về một biến toàn cầu:
x = 10
def showX():
print("The value of x is", x)
showX()
# The value of x is 10
biến x
trong đoạn mã trên đã được khai báo bên ngoài một chức năng: x = 10
.
Sử dụng showX()
chức năng, chúng tôi vẫn có thể truy cập x
bởi vì nó đã được khai báo trong một phạm vi toàn cầu.
Hãy xem một ví dụ khác cho thấy điều gì sẽ 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.
def X():
x = 10
X()
def showX():
print("The value of x is", x)
showX()
NameError: name 'x' is not defined
Trong ví dụ trên, chúng tôi đã khai báo x
bên trong một chức năng 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ì x
không được xác định trên toàn cầu.
Các biến được định nghĩa 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 một biến cục bộ bằng cách sử dụng global
từ khóa – mà chúng ta sẽ thảo luận trong phần tiếp theo.
cái gì global
Từ khóa được sử dụng trong Python?
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ục.
- Để làm cho một biến cục bộ có thể truy cập được bên ngoài phạm vi cục bộ.
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 global
từ khóa
Trong phần trước chúng ta đã khai báo một biến toàn cục, chúng ta đã 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ử thay đổi giá trị của một biến toàn cục và xem điều gì sẽ xảy ra:
x = 10
def showX():
x = x + 2
print("The value of x is", x)
showX()
# local variable 'x' referenced before assignment
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 x
, 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 thể sửa đổi x
.
Để khắc phục điều đó, chúng tôi sử dụng global
Biến đổi. Đây là cách:
x = 10
def showX():
global x
x = x + 2
print("The value of x is", x)
showX()
# The value of x is 12
Sử dụng global
từ khóa trong đoạn mã trên, chúng tôi có thể sửa đổi x
và thêm 2 vào giá trị ban đầu của nó.
Ví dụ #2 – Cách tạo một biến cục bộ có thể truy cập được bên ngoài phạm vi cục bộ bằng cách sử dụng global
từ khóa
Khi chúng ta 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 ta có thể khắc phục điều đó bằng cách sử dụng global
từ khóa:
def X():
global x
x = 10
X()
def showX():
print("The value of x is", x)
showX()
# The value of x is 10
Để làm cho nó có thể cho x
để có thể truy cập bên 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 global
từ khóa: global x
.
Sau đó, chúng tôi đã gán một giá trị cho x
. Sau đó, chúng tôi đã gọi hàm mà chúng tôi đã sử dụng để khai báo nó: X()
Khi chúng tôi gọi là showX()
chức năng in giá trị của x
khai báo trong X()
chức năng, chúng tôi không gặp lỗi vì x
có phạm vi toàn cầu.
Tóm lược
Trong bài viết này, chúng ta đã nói về biến toàn cục và biến cục bộ trong Python.
Các ví dụ cho thấy cách khai báo cả biến toàn cục và biến cục bộ.
Chúng tôi cũng đã nói về global
từ khóa cho phép bạn sửa đổi giá trị của biến toàn cục hoặc làm cho biến cục bộ có thể truy cập được bên ngoài phạm vi của nó.
Chúc mừng mã hóa!