Trong bài các biến Python lần trước, khi nhắc đến vấn đề thay đổi giá trị của biến toàn cục trong một hàm mình có nói phải dùng từ khóa Python là global, nhưng chưa nói rõ cách dùng vì muốn dành riêng một bài để viết chi tiết về từ khóa này.

Ví dụ 2: Chỉnh sửa biến toàn cục trong một hàm

Giả sử ta cần sửa giá trị của a thành a + 9 trong hàm them(), nếu viết code sau:

Bạn sẽ nhận được thông báo lỗi:

Đó là do chúng ta chỉ có thể truy cập vào biến toàn cục mà không thể chỉnh sửa nó trong một hàm. Giải pháp cho vấn đề này là sử dụng từ khóa global. Khi đó, đoạn code trên sẽ được viết lại như sau:

Chạy code trên ta được kết quả đầu ra là:

Ở đây, chúng ta định nghĩa a là một biến toàn cục trong hàm them(), sau đó tăng giá trị của a lên 9, tức là a = a + 9. Sau đó, chúng ta gọi hàm them(), cuối cùng, in biến toàn cục a. Kết quả là thay đổi được thực hiện cho biến a trong hàm them() cũng xảy ra trên biến toàn cục bên ngoài hàm, a = 10.

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

Khi chạy code trên chúng ta nhận được đầu ra là 1. Tuy nhiên, có vài trường hợp chúng ta cần chỉnh sửa biến toàn cục từ bên trong hàm, đó chính là trường hợp mình nhắc đến từ đầu, vậy phải làm sao?

Ví dụ 3: Chia sẻ biến toàn cục global thông qua mô-đun trong Python

Trong Python, chúng ta tạo ra một mô-dun config.py để giữ các biến toàn cục và chia sẻ thông tin thông qua 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ẻ biến toàn cục qua các mô-đun Python.

Tạo một file config.py để lưu trữ biến toàn cục:

Tạo một file update.py để thay đổi các biến toàn cục:

Viết file main.py để kiểm tra sự thay đổi:

Khi chạy file main.py, đầu ra sẽ là:

Ở đây, ta đã tạo ra 3 file là config.py, update.py và main.py. Mô-đun config.py lưu trữ 2 biến toàn cục là a và b. Trong file update.py chúng ta nhập mô-đun config.py và sửa đổi giá trị của biến a, b. Tương tự trong file main.py, ta nhập cả 2 mô-đun config.py và update.py. Cuối cùng, chúng ta dùng lệnh in để kiểm tra xem giá trị của biến a và b đã được thay đổi hay chưa.

Quy tắc sử dụng biến global trong Python

“Global Python là gì? Là câu hỏi mà rất nhiều người thắc mắc khi tìm hiểu ngôn ngữ Python. Biến global trong Python được sử dụng để chỉ ra rằng biến được định nghĩa hoặc thay đổi trong một phạm vi cục bộ (như bên trong một hàm) sẽ trở thành biến toàn cục, có thể truy cập từ bất kỳ đâu trong chương trình. Nói cách khác, từ khoá "global" đưa biến vào phạm vi toàn cục thay vì giữ nó trong phạm vi cục bộ.

Dưới đây là một ví dụ về cách khai báo biến global trong Python:

global_var = 10  # Biến toàn cục

global global_var  # Sử dụng từ khoá global để thay đổi biến toàn cục

modify_global_variable()  # Gọi hàm để thay đổi giá trị của biến toàn cục

print(global_var)  # In giá trị của biến toàn cục sau khi thay đổi

Trong Python, các quy tắc về từ khóa global bao gồm:

Việc khai báo trùng tên ở biến toàn cục và biến cục bộ là một trong những vấn đề phức tạp trong lập trình Python. Điều quan trọng là sử dụng biến một cách hợp lý. Đối với biến toàn cục, nên sử dụng chúng một cách cẩn thận và tránh xung đột với biến cục bộ trong hàm bằng cách sử dụng tham số truyền vào. Hi vọng bài viết trên của ICANTECH sẽ giúp bạn hiểu thêm về biến global trong Python cũng như sự khác biệt giữa biến toàn cục và biến cục bộ và biết cách sử dụng chúng một cách thích hợp. Chúc các bạn thành công!

Nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay các khóa học lập trình online tại ICANTECH nhé

Python là một ngôn ngữ lập trình kịch bản (scripting language) do Guido van Rossum tạo ra năm 1990.

Đến nay thì cộng đồng người sử dụng ngôn ngữ này rất đông, nếu so sánh từ bảng xếp hạng các ngôn ngữ năm 2017 thì Python đứng tứ 5 trong top 10 ngôn ngữ phổ biến nhất.

Với Python bạn có thể làm được nhiều điều khác nhau, như xây dựng web, application hay xây dựng các ứng dụng trí tuệ nhân tạo ....

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

Trong ví dụ này bạn sẽ biết cách để sử dụng biến toàn cục trong hàm lồng nhau.

Ở đây, chúng ta khai báo biến toàn cục trong hàm lồng ham2(). Trong ham1(), x không bị ảnh hưởng bởi từ khóa global.

Trước và sau khi gọi hàm ham2(), x sẽ lấy giá trị của biến cục bộ là 20. Bên ngoài hàm ham1(), x sẽ lấy giá trị toàn cục, được khia báo trong ham2() là 25. Đây là do ta sử dụng từ khóa global trong x để tạo biến toàn cục trong ham2(). Nếu chúng ta thực hiện bất kỳ sự thay đổi nào cho x trong ham2() thì thay đổi sẽ xuất hiện bên ngoài phạm vi cục bộ.

Làm bài tập Python có giải để rèn luyện thêm bạn nhé.

Biến toàn cục (Global Variables) là biến mà bạn định nghĩa ở phạm vi cao nhất trong chương trình, và nó có thể được truy cập từ bất kỳ đâu trong chương trình, bao gồm cả các hàm hoặc lớp.

Để định nghĩa một biến toàn cục, bạn chỉ cần gán giá trị cho biến mà không đặt nó trong bất kỳ hàm nào.

some_function()  # In ra giá trị của global_var

Dưới đây là một ví dụ tổng hợp sử dụng biến toàn cục, biến cục bộ và biến nonlocal trong Python:

global_var = 10  # Biến toàn cục

outer_var = 5  # Biến cục bộ cho outer_function

nonlocal outer_var  # Biến nonlocal cho outer_var

local_var = 15  # Biến cục bộ cho inner_function

outer_var = outer_var + local_var  # Thay đổi outer_var bằng outer_var + local_var

global global_var  # Truy cập biến toàn cục global_var

global_var = global_var + 5  # Thay đổi global_var bằng global_var + 5

print("inner_function: outer_var =", outer_var)  # In giá trị outer_var sau khi thay đổi trong inner_function

print("outer_function: global_var =", global_var)  # In giá trị global_var sau khi thay đổi trong inner_function

outer_function: global_var = 15

Trong ví dụ trên có các biến, bao gồm:

Khi gọi outer_function, inner_function được gọi bên trong và thay đổi giá trị của outer_var và global_var, dẫn đến kết quả được in ra như trên.