btvn.vn
Tìm kiếm Đăng nhập

Biến cục bộ và đọc biến ngoài hàm

Lưu trên thiết bị này
Hàm và phạm vi biến trong Python · Chọn bài khác

Tên được gán trong hàm là cục bộ

`so` bên trong hàm dưới đây là một tên cục bộ. Nó trùng chữ với `so` bên ngoài nhưng là chỗ gán khác: ```python so = 10 def tang(so): so = so + 1 return so print(tang(4)) print(so) ``` Kết quả là `5` rồi `10`. Lời gọi đưa 4 vào tham số cục bộ, tăng thành 5 và trả về; biến ngoài vẫn giữ 10. Với số nguyên, gán lại tham số không làm biến của nơi gọi thay đổi.

Bài luyện

Mã `tang(4)` trong bài in hai dòng nào?
Chọn một đáp án

Đọc tên ngoài khác với gán lại tên đó

Nếu trong hàm chỉ **đọc** tên ngoài, Python có thể tìm giá trị đó ở phạm vi ngoài: ```python phi = 3 def tong_phi(gia): return gia + phi print(tong_phi(7)) ``` Kết quả là `10`. Ở đây hàm không gán `phi`, nên đọc giá trị 3 bên ngoài. Để bài toán ít phụ thuộc vào trạng thái ngoài, thường rõ hơn khi đưa `phi` thành tham số riêng. Nếu một hàm gán tên `phi` mà không khai báo `global`, Python coi tên được gán đó là cục bộ; không thể đọc nó trước lần gán trong hàm.

Bài luyện

Với `phi = 3`, `tong_phi(7)` trả gì?
Chọn một đáp án

Bài luyện

Vì sao `so` ngoài hàm vẫn bằng 10 sau `tang(4)`?
Chọn một đáp án

Đang học