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

Cách hoạt động của biến scope (phạm vi) trong hàm Python

Biến Python được tạo khi gán giá trị. Không cần khai báo trước như C.

Global vs Local

x = 141  # Global

def foo():
    x = 424  # Local variable mới, che biến global
    print(x) # 424

foo()
print(x)     # 141 (global không đổi)

Đầu ra

424
141

Từ khóa global

x = 141
def foo():
    global x
    x = 424   # Sửa biến global
    print(x)

foo()
print(x)      # 424 (global đã đổi)

Đầu ra

424
424

Từ khóa nonlocal (Python 3)

Dùng cho nested function để sửa biến enclosing scope:

def outer():
    x = 1
    def inner():
        nonlocal x
        x = 2
    inner()
    print(x)  # 2

outer()

Best practice

  • Biến nên có scope hẹp nhất có thể.
  • Hạn chế dùng global (khó debug, test).
  • Truyền dữ liệu qua tham số và return value.