Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Từ khóa global trong Python


Các biến khác nhau trong một chương trình Python có phạm vi (scope) khác nhau. Tùy thuộc vào nơi nó được khai báo, biến có thể truy cập được hoặc không bên trong một hàm. Đôi khi chúng ta cần sửa đổi một biến nằm bên trong một hàm từ bên ngoài phạm vi hiện tại của nó. Trong trường hợp đó, chúng ta sử dụng từ khóa global cùng với tên biến.

Dưới đây là các điểm chính về từ khóa global:

  • Một biến được khai báo bên ngoài hàm là biến toàn cục (global) theo mặc định.
  • Chúng ta sử dụng từ khóa global cho một biến nằm bên trong hàm để có thể sửa đổi nó.
  • Nếu không có từ khóa global, biến bên trong hàm mặc định là cục bộ (local).

Không sử dụng Global

Trong các ví dụ dưới đây, chúng ta sẽ xem việc thay đổi biến diễn ra như thế nào khi không có từ khóa global. Điều này giúp chúng ta hiểu sự khác biệt mà từ khóa global tạo ra trong chương trình tiếp theo. Trong ví dụ dưới đây, chúng ta cố gắng sửa đổi biến toàn cục bên trong hàm. Nhưng một lỗi xảy ra vì chúng ta không thể sửa đổi biến toàn cục bên trong hàm.

Ví dụ

var = 321
# hàm để sửa đổi biến
def modify():
    var = var * 2
    print(var)
# gọi hàm
modify()

Kết quả

Chạy mã trên cho kết quả sau:

UnboundLocalError: local variable 'var' referenced before assignment

Sử dụng Global

Bây giờ chúng ta khai báo biến bên trong hàm cùng với từ khóa global. Điều này làm cho biến có thể sửa đổi được.

Ví dụ

var = 321
# hàm để sửa đổi biến
def modify():
    global var
    var = var * 2
    print(var)
# gọi hàm
modify()

Kết quả

Chạy mã trên cho kết quả sau:

642

Global trong hàm lồng nhau (Nested Functions)

Nếu chúng ta phải sử dụng các hàm lồng nhau, thì chúng ta phải khai báo từ khóa global trong hàm nội bộ để biến có thể được sửa đổi.

Ví dụ

def outer_func():
    var = 321
    # hàm để sửa đổi biến
    def modify():
        global var
        var = var * 2
        print(var)
    # gọi hàm
    modify()
outer_func()

Kết quả

Chạy mã trên cho kết quả sau:

642