Từ khóa toàn cầu trong Python (Có ví dụ)

Trong bài viết này, bạn sẽ tìm hiểu về từ khóa toàn cầu, biến toàn cục và khi nào sử dụng từ khóa toàn cầu.

Trước khi đọc bài viết này, hãy đảm bảo rằng bạn đã nắm được một số kiến ​​thức cơ bản về Python Global, Local và Nonlocal Variables.

Từ khóa toàn cầu là gì

Trong Python, globaltừ khóa 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 một biến toàn cục và thực hiện các thay đổi đối với biến đó trong ngữ cảnh cục bộ.

Quy tắc của Từ khóa toàn cầu

Các quy tắc cơ bản cho globaltừ khóa trong Python là:

  • Khi chúng ta tạo một biến bên trong một hàm, nó là cục bộ theo mặc định.
  • Khi chúng ta xác định một biến bên ngoài một hàm, nó là toàn cục theo mặc định. Bạn không cần phải sử dụng globaltừ khóa.
  • Chúng tôi sử dụng globaltừ khóa để đọc và ghi một biến toàn cục bên trong một hàm.
  • Sử dụng globaltừ khóa bên ngoài một chức năng không có tác dụng.

Sử dụng từ khóa toàn cầu

Hãy lấy một ví dụ.

Ví dụ 1: Truy cập biến toàn cục từ bên trong một hàm

 c = 1 # global variable def add(): print(c) add()

Khi chúng ta chạy chương trình trên, kết quả đầu ra sẽ là:

 1

Tuy nhiên, chúng ta có thể gặp một số trường hợp cần sửa đổi biến toàn cục từ bên trong một hàm.

Ví dụ 2: Sửa đổi biến toàn cục từ bên trong hàm

 c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()

Khi chúng tôi chạy chương trình trên, đầu ra hiển thị lỗi:

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

Điều này là do chúng ta chỉ có thể truy cập biến toàn cục nhưng không thể sửa đổi nó từ bên trong hàm.

Giải pháp cho điều này là sử dụng globaltừ khóa.

Ví dụ 3: Thay đổi biến toàn cục từ bên trong một hàm bằng cách sử dụng toàn cục

 c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)

Khi chúng ta chạy chương trình trên, kết quả đầu ra sẽ là:

 Bên trong add (): 2 Trong main: 2

Trong chương trình trên, chúng ta định nghĩa c là một từ khóa toàn cục bên trong add()hàm.

Sau đó, chúng ta tăng biến c lên 1, tức là c = c + 2. Sau đó, chúng ta gọi add()hàm. Cuối cùng, chúng ta in biến toàn cục c.

Như chúng ta có thể thấy, thay đổi cũng xảy ra trên biến toàn cục bên ngoài hàm c = 2,.

Biến toàn cầu trên các mô-đun Python

Trong Python, chúng tôi tạo một mô-đun duy nhất config.pyđể chứa các biến toàn cục và chia sẻ thông tin giữa các mô-đun Python trong cùng một chương trình.

Đây là cách chúng ta có thể chia sẻ các biến toàn cục trên các mô-đun python.

Ví dụ 4: Chia sẻ một biến toàn cầu qua các mô-đun Python

Tạo một config.pytệp, để lưu trữ các biến toàn cục

 a = 0 b = "empty"

Tạo update.pytệp để thay đổi các biến toàn cục

 import config config.a = 10 config.b = "alphabet"

Tạo main.pytệp để kiểm tra các thay đổi về giá trị

 import config import update print(config.a) print(config.b)

Khi chúng tôi chạy main.pytệp, đầu ra sẽ là

 10 bảng chữ cái

Ở phía trên, chúng tôi đã tạo ra ba tác phẩm: config.py, update.py, và main.py.

Mô-đun config.pylưu trữ các biến toàn cục của a và b. Trong update.pytệp, chúng tôi nhập config.pymô-đun và sửa đổi các giá trị của a và b. Tương tự, trong main.pytệp, chúng tôi nhập cả hai config.pyupdate.pymô-đun. Cuối cùng, chúng tôi in và kiểm tra các giá trị của các biến toàn cục xem chúng có bị thay đổi hay không.

Toàn cầu trong các hàm lồng nhau

Đây là cách bạn có thể sử dụng một biến toàn cục trong hàm lồng nhau.

Ví dụ 5: Sử dụng một biến toàn cục trong hàm lồng nhau

 def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)

Đầu ra là:

 Thanh trước khi gọi: 20 Thanh gọi ngay Thanh sau khi gọi: 20 x trong chính: 25

Trong chương trình trên, chúng ta đã khai báo một biến toàn cục bên trong hàm lồng nhau bar(). foo()Hàm bên trong , x không ảnh hưởng đến từ khóa toàn cục.

Trước và sau khi gọi bar(), biến x nhận giá trị của biến cục bộ tức là x = 20. Bên ngoài foo()hàm, biến x sẽ nhận giá trị được xác định trong bar()hàm tức là x = 25. Điều này là do chúng ta đã sử dụng globaltừ khóa trong x để tạo biến toàn cục bên trong bar()hàm (phạm vi cục bộ).

Nếu chúng tôi thực hiện bất kỳ thay đổi nào bên trong bar()hàm, các thay đổi đó sẽ xuất hiện bên ngoài phạm vi cục bộ, tức là foo().

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