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

Từ khóa global trong Python


Đôi khi khai báo biến nhưng cần sửa đổi hoặc truy cập giá trị bên ngoài phạm vi khai báo (có thể ở đâu trong chương trình). Trong trường hợp đó, dùng từ khóa global với tên biến bên trong hàm nơi biến được khai báo. Nếu biến không nằm trong hàm, nó tự động có phạm vi toàn cục.

Biến ngoài hàm

Ví dụ dưới đây thấy biến ngoài hàm nhưng truy cập được từ trong hàm. Biến này đã có phạm vi toàn cục.

Ví dụ

x = 56
def func():
    y = x * 2
    return y
print(func())

Kết quả

112

Biến trong hàm

Ví dụ sau cố gắng thay đổi giá trị biến trong hàm và gặp lỗi.

Ví dụ

x = 56
def func():
    y = x * 2
    x = x + 2
    return y
print(func())

Kết quả

UnboundLocalError: local variable 'x' referenced before assignment

Cách duy nhất để sửa đổi biến toàn cục trong hàm là khai báo nó là global bên trong hàm.

Ví dụ

x = 56
def func():
    global x
    x = x + 2
    y = x * 2
    return y
print(func())

Kết quả

116

Biến trong hàm lồng nhau (nested function)

Trong trường hợp hàm lồng nhau, ta tạo biến global ở hàm sâu nhất như ví dụ dưới.

Ví dụ

def func_out():
    x = 56
    def func_in():
        global x
        x = 20
        print("x là:", x)
        x = x + 3
        y = x * 2
        print("y là:", y)
    func_in()
func_out()
print("x là:", x)

Kết quả

x là: 20
y là: 46
x là: 23