Đôi khi chúng ta khai báo một biến nhưng chúng ta có thể cần phải sửa đổi hoặc truy cập các giá trị nằm ngoài phạm vi khai báo hiện tại của nó, có thể ở bất kỳ đâu trong chương trình hiện tại. Trong trường hợp như vậy, chúng ta sử dụng từ khóa Global với tên biến bên trong hàm nơi biến được khai báo. Nếu biến không nằm trong một hàm, thì nó sẽ tự động có phạm vi toàn cục.
Biến bên ngoài một hàm
Trong ví dụ dưới đây, chúng ta thấy một giá trị bên ngoài một hàm, nhưng chúng ta có thể truy cập nó từ bên trong một hàm. Bởi vì một biến như vậy đã có phạm vi toàn cục.
Ví dụ
x = 56 def func(): y = x *2 return y print(func())
Chạy đoạn mã trên cho chúng ta kết quả sau:
Đầu ra
112
Biến bên trong một hàm
Trong ví dụ tiếp theo, chúng tôi cố gắng thay đổi giá trị của một biến bên trong một hàm và gặp lỗi.
Ví dụ
x = 56 def func(): y = x *2 x = x+2 return y print(func())
Chạy đoạn mã trên cho chúng ta kết quả sau:
Đầu ra
nboundLocalError: local variable 'x' referenced before assignment
Cách duy nhất chúng ta có thể sửa đổi giá trị của một biến có phạm vi toàn cục bên trong một hàm là khai báo nó như một biến toàn cục bên trong một hàm.
Ví dụ
x = 56 def func(): global x x = x + 2 y = x *2 return y print(func())
Chạy đoạn mã trên cho chúng ta kết quả sau
Đầu ra
116
Biến bên trong một hàm lồng nhau
Trong trường hợp hàm lồng nhau, chúng tôi tạo biến toàn cục trong hàm trong cùng như thể hiện trong ví dụ dưới đây.
Ví dụ
def func_out(): x = 56 def func_in(): global x x = 20 print("x is: ",x) x = x + 3 y = x *2 print ("y is: ",y) func_in() func_out() print("x is: ",x)
Chạy đoạn mã trên cho chúng ta kết quả sau:
Đầu ra
x is: 20 y is: 46 x is: 23