Hướng dẫn global python la gì

Hướng dẫn global python la gì

Đã đăng vào thg 11 12, 2020 6:30 SA 4 phút đọc

Chào các bạn trong bài viết này, mình sẽ giới thiệu với các bạn về Từ khóa Global trong Python.Mình sẽ giải thích cho các bạn hiểu về khái niệm của chúng là gì, cú pháp và cách xử dụng của chúng. Các bạn cùng tìm hiểu trong bài viết của mình nhé!

Từ khóa Global là gì.

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 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ộ.


Những quy tắc của từ khóa Global .

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

  • Khi ta tạo một biến bên trong một hàm, nó sẽ 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 từ khóaGlobal.
  • Ta sẽ sử dụng từ khóa Global để đọc và ghi một biến toàn cục bên trong một hàm.
  • Lưu ý việc sử dụng từ khóa Global bên ngoài một hàm sẽ không có tác dụng nhé.

Sử dụng từ khóa Global.

Mình sẽ có một vài ví dụ.

Ví dụ 1: Truy cập biến Global từ bên trong một hàm
c = 1 # global variable

def add():
    print(c)

add()

Khi mình 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 mình chạy chương trình trên, sẽ sảy ra lỗi:

UnboundLocalError: local variable 'c' referenced before assignment

Điều này là do 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. Nên giải pháp được đưa ra sẽ là mình sẽ sử dùng từ khóa Global.


Biến Global trong các mô-đun Python

Trong Python,ta sẽ tạo một mô-đun config.py để chứa các biến Global và chia sẻ thông tin trên các mô-đun Python trong cùng một program.

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

Ví dụ 3: Chia sẻ một biến Global qua các mô-đun Python

Tạo 1 file config.py để lưu trữ các biến Global.

a = 0
b = "empty"

Tạo 1 file update.py để thay đổi các biến Global.

import config

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

Tạo 1 file main.pyđể kiểm tra các thay đổi về giá trị

10
alphabet

Ở trên, ta đã tạo ba file: config.py, update.pymain.py.

Mô-đun config.py lưu trữ các biến Global của ab.Trong file update.py, ta import mô-đun config.py và sửa đổi các giá trị của ab. Tương tự, trong file main.py, ta import cả mô-đun config.pyupdate.py.Cuối cùng ta in và kiểm tra các giá trị của các biến Global xem chúng có bị thay đổi hay không.


Kết Luận

Dưới đây mình đã giới thiệu với các bạn về Từ khóa Global khái niệm, các xử dụng và một số ví dụ sử dụng Từ khóa Global trong Python. Hi vọng các bạn thích bài viết này. Nếu có bất kì thắc mắc gì hãy để lại comment ở phía dưới nhé.


Tham Khảo chi tiết hơn

https://www.programiz.com/python-programming/global-keyword

All rights reserved

Bài viết được sự cho phép của tác giả Nguyễn Chí Thức

Trong bài Python này bạn sẽ học về biến toàn cục (global), biến cục bộ (local), biến nonlocal trong Python và trường hợp sử dụng các biến này.

Trong ngôn ngữ lập trình Python, một biến được khai báo bên ngoài hàm hoặc trong phạm vi toàn cục được gọi là biến toàn cục hay biến global. Biến toàn cục có thể được truy cập từ bên trong hoặc bên ngoài hàm.

Tuyển dụng lập trình python

Hãy xem ví dụ về cách tạo biến toàn cục trong Python.

x = "Biến toàn cục" #khai báo biến x
#Gọi x từ trong hàm vidu()
def vidu():
    print("x trong hàm vidu() :", x)

vidu()
#Gọi x ngoài hàm vidu()
print("x ngoài hàm vidu():", x)

Trong ví dụ trên, ta khai báo biến x là biến toàn cục, và định nghĩa hàm vidu() để in biến x. Cuối cùng ta gọi hàm vidu() để in giá trị của biến x. Chạy code trên ta sẽ được kết quả là:

x trong hàm vidu(): Biến toàn cục
x ngoài hàm vidu(): Biến toàn cục

Chuyện gì sẽ xảy ra nếu bạn thay đổi giá trị của x trong hàm?

x = 2 
def vidu():
   x=x*2    
   print(x)

vidu()

Nếu chạy code này bạn sẽ nhận được thông báo lỗi:

UnboundLocalError: local variable 'x' referenced before assignment

Lỗi này xuất hiện là do Python xử lý x như một biến cục bộ và x không được định nghĩa trong vidu().

Để thay đổi biến toàn cục trong một hàm bạn sẽ phải sử dụng từ khóa global. Chúng tôi sẽ nói kỹ hơn trong bài về từ khóa global.

Biến cục bộ trong Python

Biến được khai báo bên trong một hàm hoặc trong phạm vi cục bộ được gọi là biến cục bộ hay biến local.

def vidu():
 y = "Biến cục bộ"
vidu()
print(y)

Khi chạy code trên bạn sẽ nhận được thông báo lỗi:

NameError: name 'y' is not defined

Lỗi này xuất hiện là do chúng ta đã cố truy cập vào biến cục bộ y trong phạm vi toàn cục, nhưng y chỉ làm việc trong hàm vidu() hoặc phạm vi cục bộ.

Thông thường, để tạo một biến cục bộ, chúng ta sẽ khai báo nó trong một hàm như ví dụ dưới đây:

def vidu():
 y = "Biến cục bộ"
 print(y)
vidu()

Chạy code trên ta sẽ được kết quả

Biến cục bộ

Chúng ta quay trở lại xem xét vấn đề trước đó, lúc x là một biến toàn cục và chúng ta muốn thay đổi x trong vidu().

Biến cục bộ và biến toàn cục

Ở đây, chúng ta sẽ học cách dùng biến cục bộ và toàn cục trong cùng một code.

x = 2

def vidu():
 global x
 y = "Biến cục bộ"
 x = x * 2
 print(x)
 print(y)
#Viết bởi uCode.vn 
vidu()

Chạy code trên ta sẽ có đầu ra:

4
Biến cục bộ

Trong code trên, chúng ta khai báo x là biến toàn cục và y là biến cục bộ trong vidu() và dùng toán tử * để thay đổi biến toàn cục và in cả giá trị của x và y. Sau khi gọi hàm vidu() giá trị của x sẽ thành 4 vì được nhân đôi.

Ví dụ sử dụng biến toàn cục và cục bộ trùng tên:

x = 5

def vidu():
 x = 10
 print("Biến x cục bộ:", x)

vidu()
print("Biến x toàn cục:", x)

Sau khi chạy code trên ta có đầu ra:

Biến x cục bộ: 10
Biến x toàn cục: 5

Trong code trên, chúng ta sử dụng cùng tên x cho cả biến cục bộ và biến toàn cục. Khi in cùng biến x chúng ta nhận được hai kết quả khác nhau vì biến được khai báo ở cả hai phạm vi, cục bộ (bên trong hàm vidu()) và toàn cục (bên ngoài hàm vidu()).

Khi chúng ta in biến trong hàm vidu() nó sẽ xuất ra Biến x cục bộ: 10, đây được gọi là phạm vi cục bộ của biến. Tương tự khi ta in biến bên ngoài hàm vidu() sẽ cho ra Biến x toàn cục: 5, đây là phạm vi toàn cục của biến.

Biến nonlocal trong Python

Từ nonlocal này mình không biết dịch sang tiếng Việt sao cho chuẩn. Trong Python, biến nonlocal được sử dụng trong hàm lồng nhau nơi mà phạm vi cục bộ không được định nghĩa. Nói dễ hiểu thì biến nonlocal không phải biến local, không phải biến global, bạn khai báo một biến là nonlocal khi muốn sử dụng nó ở phạm vi rộng hơn local, nhưng chưa đến mức global.

Để khai báo biến nonlocal ta cần dùng đến từ khóa nonlocal.

Ví dụ:

def ham_ngoai():
    x = "Biến cục bộ"
 
    def ham_trong():
       nonlocal x
       x = "Biến nonlocal"
       print("Bên trong:", x)
 
    ham_trong()
    print("Bên ngoài:", x)

hamngoai()

Chạy code trên bạn sẽ có đầu ra:

Bên trong: Biến nonlocal
Bên ngoài: Biến nonlocal

Trong code trên có một hàm lồng là ham_trong(), ta dùng từ khóa nonlocal để tạo biến nonlocal. Hàm ham_trong() được định nghĩa trong phạm vi của ham_ngoai().

Lưu ý: Nếu chúng ta thay đổi giá trị của biến nonlocal, sự thay đổi sẽ xuất hiện trong biến cục bộ.

Bài viết gốc được đăng tải tại ucode.vn

Có thể bạn quan tâm:

  • Giới thiệu IDE phổ biến trong lập trình Python
  • 43 kho lưu trữ Github JS phổ biến nhất 2019 –  Bạn đã biết hết chưa?
  • Sử dụng biến trong CSS toàn tập

Xem thêm các việc làm công nghệ thông tin hấp dẫn tại TopDev