KIỂM TRA BÀI CŨ
KHỞI ĐỘNG
BÀI 28. PHẠM VI CỦA BIẾN
1. PHẠM VI CỦA BIẾN KHAI BÁO TRONG HÀM
Đặc điểm:
Các biến được tạo ra bên trong một hàm chỉ có tác dụng ở bên trong chính hàm đó (còn gọi là biến cục bộ/địa phương).
Phạm vi sử dụng:
Các biến này chỉ được sử dụng ở bên trong chính hàm đó. Chương trình chính (bên ngoài hàm) không thể sử dụng được biến này. Nếu cố tình gọi, máy sẽ báo lỗi chưa định nghĩa.
Ví dụ:
Giống như một món đồ chơi em cất trong phòng ngủ, người ở ngoài phòng sẽ không thể lấy để chơi.
Chương trình Python hoàn chỉnh:
CÂU HỎI TRẮC NGHIỆM
Câu 1: Theo tài liệu, các biến được tạo ra bên trong một hàm còn được gọi là gì?
Câu 2: Phạm vi sử dụng của các biến khai báo trong hàm là ở đâu?
Câu 3: Điều gì sẽ xảy ra nếu cố tình gọi một biến cục bộ từ bên ngoài hàm?
Câu 4: Vì sao chương trình chính không thể sử dụng được biến khai báo trong hàm?
Câu 5: Trong ví dụ về phòng ngủ, món "đồ chơi" tương đương với loại biến nào?
Câu 6: Lỗi "chưa định nghĩa" khi gọi biến cục bộ từ bên ngoài hàm mang ý nghĩa gì?
Câu 7: Viết hàm def test(): a = 5. Lệnh print(a) nằm ngoài hàm sẽ cho ra kết quả gì?
Câu 8: Để chương trình chính in được biến có giá trị mong muốn thay vì bị lỗi cục bộ, ta nên làm gì?
2. PHẠM VI CỦA BIẾN KHAI BÁO NGOÀI HÀM
Các biến được tạo ra ở chương trình chính (bên ngoài các hàm) được gọi là biến toàn cục.
a) Đọc giá trị biến ngoài hàm từ bên trong hàm
Đặc điểm:
Bên trong hàm có thể truy cập để xem và sử dụng giá trị của biến đã khai báo trước đó ở bên ngoài hàm.
Ví dụ:
Giống như chiếc đồng hồ treo ở phòng khách, mọi người trong nhà đều có thể đến xem giờ khi cần.
Chương trình Python hoàn chỉnh:
b) Thay đổi giá trị biến ngoài hàm từ bên trong hàm
Đặc điểm:
Biến khai báo bên ngoài mặc định sẽ không cho phép hàm tự ý thay đổi giá trị. Nếu muốn thay đổi giá trị của biến này từ bên trong hàm, em bắt buộc phải khai báo lại biến đó với từ khoá global.
Ví dụ:
Giống như heo đất chung của cả nhà để ở phòng khách. Nếu em muốn lấy tiền từ heo đất để đi mua đồ, em phải xin phép (dùng lệnh global).
Chương trình Python hoàn chỉnh:
CÂU HỎI TRẮC NGHIỆM
Câu 9: Các biến được tạo ra ở chương trình chính (bên ngoài các hàm) được gọi là gì?
Câu 10: Từ khóa nào bắt buộc phải dùng để xin phép thay đổi giá trị biến ngoài hàm từ bên trong hàm?
Câu 11: Bên trong hàm có thể làm gì với biến ngoài hàm nếu không dùng đến từ khóa đặc biệt?
Câu 12: Hình ảnh "chiếc đồng hồ treo ở phòng khách" minh họa cho khả năng gì của hàm?
Câu 13: Hình ảnh "heo đất chung" minh họa cho quy tắc nào khi muốn thay đổi biến toàn cục?
Câu 14: Theo mặc định, nếu không dùng từ khóa global thì biến khai báo bên ngoài sẽ như thế nào?
Câu 15: Cho biến toàn cục x = 10. Để lệnh x = x + 5 hoạt động trong hàm, dòng đầu của hàm phải viết gì?
Câu 16: Có biến toàn cục a = 5. Trong hàm xem(), lệnh print(a) sẽ ra sao nếu không có lệnh global?
3. THỰC HÀNH: PHẠM VI CỦA BIẾN
Nhiệm vụ 1: Khám phá "Biến cục bộ".
Đề bài:
Trong lập trình, các biến khai báo bên trong hàm chỉ có tác dụng bên trong hàm đó (tính địa phương/cục bộ).
Em hãy viết chương trình tạo một biến tien_tui ở bên ngoài hàm. Sau đó, viết một hàm di_sieu_thi() cũng tạo một biến tien_tui ở bên trong. Kiểm tra xem việc tiêu tiền bên trong hàm có làm thay đổi số tiền ở bên ngoài hàm hay không.
Hướng dẫn:
1. Khai báo biến tien_tui ngoài hàm và gán cho nó một giá trị (ví dụ: 100).
2. Định nghĩa hàm di_sieu_thi(). Bên trong hàm này, gán biến tien_tui = 0 (tiêu hết tiền) và in ra màn hình.
3. Gọi hàm di_sieu_thi(). Sau đó, in biến tien_tui ở ngoài hàm ra màn hình để so sánh.
Chương trình Python hoàn chỉnh:
Nhiệm vụ 2: Sử dụng từ khóa global để thay đổi biến toàn cục.
Đề bài:
Biến đã khai báo bên ngoài sẽ không có tác dụng bên trong hàm như một biến thông thường. Nếu muốn hàm có thể thay đổi được giá trị của biến bên ngoài, ta cần dùng từ khóa global.
Em hãy viết chương trình có một biến diem_kinh_nghiem ở ngoài hàm. Viết hàm tang_diem() sử dụng từ khóa global để cộng thêm 50 điểm vào biến này mỗi khi gọi hàm.
Hướng dẫn:
1. Tạo biến diem_kinh_nghiem = 0 ở ngoài hàm.
2. Định nghĩa hàm tang_diem(). Dòng đầu tiên trong hàm phải là global diem_kinh_nghiem để xin phép Python cho sử dụng biến bên ngoài.
3. Tăng biến đó lên 50.
4. Gọi hàm 2 lần và in kết quả để quan sát sự thay đổi.
Chương trình Python hoàn chỉnh:
Nhiệm vụ 3: Lọc danh sách điểm số.
Đề bài:
Viết một hàm có tên là loc_diem_dat(danh_sach_A, muc_diem_x). Hàm sẽ duyệt qua các điểm số trong danh sách A, tìm những điểm lớn hơn hoặc bằng muc_diem_x và lưu vào một danh sách mới B để trả về.
Hướng dẫn:
1. Khởi tạo một hàm với 2 tham số: danh sách chứa điểm và mức điểm cần so sánh.
2. Bên trong hàm, tạo một danh sách rỗng B = [] (đây là biến cục bộ, chỉ sống trong hàm).
3. Dùng vòng lặp for để duyệt từng phần tử trong danh sách truyền vào. Dùng lệnh if để kiểm tra, nếu điểm >= muc_diem_x thì dùng B.append() để thêm vào danh sách kết quả. Cuối cùng dùng return B.
Chương trình Python hoàn chỉnh: