Bạn đã từng gặp phải tình huống muốn thay đổi giá trị của biến nằm ngoài phạm vi hiện tại trong Python? Đó chính là lúc bạn cần sử dụng từ khóa Global. Trong bài viết này, chúng ta sẽ tìm hiểu về từ khóa Global và cách sử dụng nó trong Python.
Từ khóa Global trong Python
Trước khi đi vào chi tiết, hãy hiểu rõ khái niệm của từ khóa Global trong Python. Từ khóa Global cho phép bạn sửa đổi biến bên ngoài phạm vi hiện tại. Nó được sử dụng để tạo các biến toàn cục từ một phạm vi không toàn cục, ví dụ như bên trong một hàm.
Từ khóa Global chỉ được sử dụng bên trong một hàm khi bạn muốn thực hiện các phép gán hoặc thay đổi một biến. Tuy nhiên, nếu bạn chỉ cần truy cập một biến toàn cục bên trong một hàm, không cần sử dụng từ khóa Global.
Quy tắc của từ khóa Global trong Python
Có một số quy tắc quan trọng khi sử dụng từ khóa Global trong Python:
- Nếu một biến được gán giá trị ở bất kỳ đâu trong phần thân của hàm, nó sẽ được coi là biến cục bộ trừ khi được khai báo rõ ràng là biến toàn cục.
- Các biến chỉ có thể được tham chiếu bên trong một hàm nếu chúng là biến toàn cục.
- Bạn có thể sử dụng từ khóa Global để sử dụng một biến toàn cục bên trong một hàm mà không cần sử dụng từ khóa Global bên ngoài một hàm.
Ví dụ 1:
# Python program showing no need to # use global keyword for accessing # a global value # global variable a = 15 b = 10 # function to perform addition def add(): c = a + b print(c) # calling a function add()
Kết quả:
25
Nếu bạn cần gán một giá trị mới cho một biến toàn cục, bạn có thể làm điều đó bằng cách khai báo biến là toàn cục.
Ví dụ 2: Code không có từ khóa Global
# Python program showing to modify # a global value without using global # keyword a = 15 # function to change a global value def change(): a = a + 5 print(a) change()
Kết quả:
UnboundLocalError: local variable 'a' referenced before assignment
Lỗi này xảy ra khi chúng ta cố gắng gán giá trị cho một biến trong phạm vi bên ngoài. Điều này có thể được thực hiện bằng cách sử dụng biến toàn cục.
Ví dụ 3: Sử dụng từ khóa Global
# Python program to modify a global # value inside a function x = 15 def change(): global x x = x + 5 print("Value of x inside a function :", x) change() print("Value of x outside a function :", x)
Kết quả:
Value of x inside a function : 20 Value of x outside a function : 20
Trong ví dụ trên, chúng ta đặt x là biến toàn cục bên trong hàm change(). Sau đó, giá trị của x tăng thêm 5 và chúng ta nhận được kết quả là 20. Như chúng ta có thể thấy bằng cách thay đổi giá trị bên trong hàm change(), sự thay đổi cũng được phản ánh trong giá trị bên ngoài biến toàn cục.
Các biến toàn cục trên các mô-đun Python:
Một cách tốt nhất để chia sẻ các biến toàn cục trên các mô-đun khác nhau trong cùng một chương trình là tạo một mô-đun đặc biệt (thường được đặt tên là config hoặc cfg). Bạn có thể nhập mô-đun cấu hình vào tất cả các mô-đun của ứng dụng của bạn; mô-đun sau đó sẽ có sẵn dưới dạng tên chung. Chỉ có một phiên bản của mỗi mô-đun và vì vậy bất kỳ thay đổi nào được thực hiện đối với đối tượng mô-đun sẽ được phản ánh ở mọi nơi. Ví dụ: chia sẻ các biến toàn cục trên các mô-đun
Mã 1: Tạo một tệp config.py để lưu trữ các biến toàn cục:
x = 0 y = 0 z = "none"
Mã 2: Tạo tệp modify.by để sửa đổi các biến toàn cục:
import config config.x = 1 config.y = 2 config.z = "geeksforgeeks"
Ở đây chúng ta đã sửa đổi giá trị của x, y và z. Các biến này đã được xác định trong mô-đun config.py, do đó phải nhập mô-đun config và chúng ta có thể sử dụng config.variable_name để truy cập các biến này.
Mã 3: Tạo tệp main.py để sửa đổi các biến toàn cục:
import config import modify print(config.x) print(config.y) print(config.z)
Đầu ra:
1 2 geeksforgeeks
Từ khóa Global trong hàm lồng nhau
Để sử dụng từ khóa Global trong một hàm lồng nhau, bạn phải khai báo một biến với từ khóa toàn cục bên trong hàm lồng nhau.
def add(): x = 15 def change(): global x x = 20 print("Before making changing: ", x) print("Making change") change() print("After making change: ", x) add() print("value of x",x)
Kết quả:
Before making changing: 15 Making change After making change: 15 value of x 20
Trong ví dụ trên, trước và sau khi thực hiện change(), biến x giữ giá trị của biến cục bộ là 15. Bên ngoài hàm add(), biến x sẽ giữ giá trị đã được xác định trong hàm change(), tức là 20. Điều này là do chúng ta đã sử dụng từ khóa global trong x để tạo biến toàn cục trong phạm vi địa phương của hàm change().
Kết luận: Trên đây là khái niệm và các ví dụ về từ khóa Global trong Python. Hy vọng các kiến thức trên hữu ích cho bạn trong quá trình lập trình với Python. Nếu bạn muốn tìm hiểu thêm về Python và các ngôn ngữ lập trình khác, hãy tham khảo các khóa học lập trình tại T3H.
Nguồn: Programiz, Geeksforgeeks