Bài tập trắc nghiệm Tin học 10 Kết Nối Tri Thức – Bài 28 giải quyết các xung đột định danh và xác lập ranh giới tồn tại của các vùng nhớ trong suốt vòng đời của chương trình máy tính. Tiếp cận Bài 28 – Phạm vi của biến, học sinh phân tích sự khác biệt cốt lõi giữa biến cục bộ (chỉ có hiệu lực bên trong hàm) và biến toàn cục (có hiệu lực trong toàn bộ chương trình). Bài học thuộc Chủ đề 5: Giải quyết vấn đề với sự trợ giúp của máy tính hướng dẫn cách sử dụng từ khóa global để cho phép hàm thay đổi trực tiếp giá trị của biến toàn cục. Ở phân môn tin học 10, các em giải thích được lỗi UnboundLocalError khi cố ý đọc biến toàn cục nhưng lại gán giá trị biến cùng tên bên trong hàm. Quản lý tốt không gian tên giúp xây dựng các hệ thống phần mềm lớn ổn định.
Tại nền tảng dethitracnghiem, bộ đề tự học Bài tập trắc nghiệm Tin học 10 Kết Nối Tri Thức đã sẵn sàng cho năm học 2026–2027 với các đề mới nhất. Học sinh thỏa sức tham gia làm đề thi, bài tập trực tuyến giúp ôn thi dễ dàng, củng cố kỹ năng theo dõi sự biến đổi giá trị của các biến cùng tên ở hai phạm vi khác nhau. Thuộc chuyên đề ôn tập lớp 10, các câu hỏi kiểm tra sâu sắc năng lực phân tích luồng dữ liệu và bộ nhớ ngăn xếp của học sinh. Tiện ích chấm điểm nhanh gọn hoàn toàn miễn phí giúp các em xác nhận ngay mức độ hiểu bài sau khi hoàn tất lượt thi. Hệ thống đáp án và lời giải chi tiết chỉ ra các tình huống rủi ro khi lạm dụng biến toàn cục, giúp người học hình thành phong cách viết mã nguồn an toàn.
Câu 1: Biến được khai báo bên trong một hàm được gọi là loại biến nào?
A. Biến cục bộ (local).
B. Biến toàn cục (global).
C. Biến hệ thống chung.
D. Hằng số của chương trình.
Câu 2: Phạm vi hoạt động của một biến cục bộ được giới hạn ở đâu?
A. Trong toàn bộ mọi tệp mã.
B. Trong tất cả các hàm khác.
C. Chỉ bên trong hàm khai báo nó.
D. Ở bên ngoài chương trình chính.
Câu 3: Điều gì xảy ra khi ta truy cập một biến cục bộ ở bên ngoài hàm của nó?
A. Trả về giá trị 0.
B. Trả về giá trị None.
C. Tự động tạo biến mới.
D. Báo lỗi NameError.
Câu 4: Biến được khai báo ở chương trình chính (bên ngoài các hàm) gọi là gì?
A. Biến cục bộ tạm.
B. Biến độc lập mã.
C. Biến điều khiển lặp.
D. Biến toàn cục (global).
Câu 5: Trong thân hàm, ta có thể đọc giá trị của biến toàn cục không?
A. Có thể đọc giá trị bình thường.
B. Tuyệt đối không thể đọc được.
C. Chỉ đọc được khi có từ khóa def.
D. Sẽ gây ra lỗi cú pháp chương trình.
Câu 6: Muốn thay đổi giá trị của một biến toàn cục ngay bên trong hàm, ta phải dùng từ khóa nào?
A. Từ khóa local.
B. Từ khóa global.
C. Từ khóa static.
D. Từ khóa extern.
Câu 7: Cho đoạn mã: x = 10; def f(): x = 5; f(); print(x). Màn hình sẽ in ra giá trị nào?
A. Số 5.
B. Số 15.
C. Số 10.
D. Báo lỗi biến x.
Câu 8: Ở Câu 7, biến x = 5 trong thân hàm f đóng vai trò là biến gì?
A. Biến toàn cục mới.
B. Biến tham số của f.
C. Biến hằng số cố định.
D. Biến cục bộ của hàm f.
Câu 9: Cho đoạn mã: x = 10; def f(): global x; x = 5; f(); print(x). Giá trị in ra là gì?
A. Số 5.
B. Số 10.
C. Số 15.
D. Báo lỗi cú pháp.
Câu 10: Hai biến cùng tên nằm ở hai hàm hoàn toàn khác nhau có quan hệ gì?
A. Dùng chung một vùng nhớ.
B. Hai biến độc lập riêng biệt.
C. Gây ra xung đột phần mềm.
D. Biến sau ghi đè biến trước.
Câu 11: Cho đoạn mã: def f(): a = 1; f(); print(a). Kết quả nhận được khi chạy là gì?
A. In ra số 1.
B. In ra số 0.
C. Báo lỗi NameError.
D. In ra chữ None.
Câu 12: Tham số của một hàm có phạm vi hoạt động tương đương với loại biến nào?
A. Biến toàn cục ngoài.
B. Biến hệ thống điều hành.
C. Biến của hàm lân cận.
D. Biến cục bộ trong hàm.
Câu 13: Cho x = 1. Đoạn mã: def f(): print(x); f(). Kết quả hiển thị ra màn hình là gì?
A. In ra số 1.
B. Báo lỗi UnboundLocal.
C. In ra chữ None.
D. Không in gì cả.
Câu 14: Cho đoạn mã: x = 1; def f(): print(x); x = 2; f(). Lỗi xảy ra là lỗi gì?
A. Lỗi TypeError.
B. Lỗi UnboundLocalError.
C. Lỗi IndexError.
D. Lỗi ZeroDivisionError.
Câu 15: Tại sao đoạn mã ở Câu 14 lại sinh ra lỗi khi chạy hàm f()?
A. Vì x là kiểu xâu kí tự.
B. Vì hàm f không có return.
C. Vì gán x sau khi đã dùng nó.
D. Vì x bị chia cho chữ số 0.
Câu 16: Một hàm có thể khai báo nhiều biến toàn cục cùng lúc bằng từ khóa global không?
A. Khai báo được, cách bằng dấu phẩy.
B. Không thể, chỉ khai báo một biến.
C. Bắt buộc phải viết trên nhiều tệp.
D. Chỉ cho phép khai báo số nguyên.
Câu 17: Cho đoạn mã: def f(): global a, b; a = 1; b = 2; f(); print(a + b). Kết quả in ra là:
A. Số 0.
B. Số 3.
C. Báo lỗi biến.
D. Số 12.
Câu 18: Lời khuyên chuẩn mực khi thiết kế hàm liên quan đến việc dùng biến toàn cục là gì?
A. Nên dùng biến toàn cục tối đa.
B. Không bao giờ dùng biến cục bộ.
C. Thay thế tham số bằng toàn cục.
D. Hạn chế lạm dụng biến toàn cục.
Câu 19: Tại sao nên hạn chế việc thay đổi biến toàn cục bên trong các hàm con?
A. Làm hàm phụ thuộc và khó kiểm soát.
B. Khiến máy tính bị quá tải bộ nhớ.
C. Làm giảm tốc độ đường truyền mạng.
D. Bắt buộc phải cài lại hệ điều hành.
Câu 20: Cho n = 5; def f(x): return x + n. Khi gọi f(3), kết quả nhận được là bao nhiêu?
A. Số 3.
B. Số 8.
C. Số 5.
D. Báo lỗi biến n.
Câu 21: Cho s = “abc”; def f(): s = “xyz”; f(); print(s). Kết quả in ra màn hình là:
A. “xyz”
B. “abcxyz”
C. “abc”
D. “”
Câu 22: Biến cục bộ được khởi tạo và giải phóng vào những thời điểm nào?
A. Khởi tạo khi bật máy, giải phóng khi tắt.
B. Khởi tạo một lần và lưu trữ mãi mãi.
C. Tồn tại xuyên suốt quá trình chạy tệp.
D. Tạo khi gọi hàm, giải phóng khi hàm xong.
Câu 23: Cho đoạn mã: c = 0; def dem(): global c; c += 1; dem(); dem(); print(c). Giá trị in ra là:
A. Số nguyên 2.
B. Số nguyên 1.
C. Số nguyên 0.
D. Báo lỗi cú pháp.
Câu 24: Cho hàm: def f(): y = 20; return y; x = f(). Giá trị của biến x là bao nhiêu?
A. Giá trị None.
B. Số nguyên 20.
C. Báo lỗi NameError.
D. Số nguyên 0.
Câu 25: Trong hàm có lệnh: global z nhưng ngoài chương trình chính chưa có z. Khi gán z = 1 thì sao?
A. Báo lỗi biến không tồn tại.
B. z chỉ là biến cục bộ tạm thời.
C. Biến z tự động bị hủy bỏ.
D. Biến z toàn cục được tạo mới.
Câu 26: Cho đoạn mã: a = [1, 2]; def f(): a.append(3); f(); print(a). Kết quả in ra là gì?
A. [1, 2]
B. Báo lỗi thiếu global.
C. [1, 2, 3]
D. [3]
Câu 27: Tại sao ở Câu 26, hàm f không cần từ khóa global a mà danh sách a vẫn bị thay đổi?
A. Vì hàm tự động thêm từ khóa global.
B. Vì a gọi phương thức sửa đối tượng.
C. Vì danh sách a luôn luôn là biến cục bộ.
D. Vì hàm f không có tham số đầu vào.
Câu 28: Lệnh gán nào sau đây trong hàm f BẮT BUỘC phải khai báo global a để đổi biến ngoài?
A. a = [1, 2, 3]
B. a.append(3)
C. a.remove(1)
D. a.clear()
Câu 29: Cho a = 2; b = 3; def f(a): b = a * 2; return b; print(f(4), b). Kết quả in ra là gì?
A. 8 8
B. 4 3
C. 8 3
D. 4 8
Câu 30: Để truyền dữ liệu an toàn từ ngoài vào trong hàm và nhận lại kết quả, ta nên dùng cách nào?
A. Luôn sử dụng biến toàn cục.
B. Ghi dữ liệu ra tệp văn bản.
C. Đặt tên các biến giống hệt nhau.
D. Dùng tham số và lệnh return.
