Phạm vi của biến
Bài 5/5 · khoảng 7 phút đọc
Biến tạo bên trong hàm chỉ tồn tại trong hàm đó — gọi là biến cục bộ. Ra khỏi hàm, nó biến mất, giống như đồ để trong phòng riêng không mang ra ngoài được.
def tinh(): ket_qua = 100 tinh()print(ket_qua)ket_qua chỉ có trong tinh(), nên ở ngoài Python báo NameError.
Biến toàn cục
Biến tạo bên ngoài mọi hàm là biến toàn cục; hàm có thể đọc nó:
ten = "Lan" def chao(): print("Xin chào", ten) chao()Tham số cũng là biến cục bộ
def them_mot(x): x = x + 1 return x so = 5print(them_mot(so))print(so)Giá trị so ngoài hàm vẫn là 5: hàm chỉ thay đổi bản sao x của nó.
Lời khuyên
Hãy truyền dữ liệu vào bằng tham số và nhận kết quả bằng return thay vì dùng biến toàn cục. Hàm viết như vậy dễ hiểu và ít gây lỗi hơn.
Ghi nhớ: biến tạo trong hàm chỉ dùng được trong hàm (cục bộ). Hãy truyền dữ liệu bằng tham số và lấy kết quả bằng
return.
Vì sao ví dụ đầu tiên lỗi `NameError`?
Vì ket_qua là biến cục bộ của hàm tinh, không tồn tại bên ngoài hàm.