1. Trong Python, khi định nghĩa một hàm, từ khóa nào được sử dụng để bắt đầu khối định nghĩa hàm?
A. function
B. def
C. define
D. func
2. Hàm trong Python có thể trả về nhiều giá trị cùng lúc bằng cách nào?
A. Chỉ có thể trả về một giá trị duy nhất.
B. Sử dụng nhiều câu lệnh return liên tiếp.
C. Trả về một tuple chứa các giá trị.
D. Sử dụng từ khóa multiple.
3. Phát biểu nào sau đây mô tả đúng nhất về tham số (parameter) trong định nghĩa hàm Python?
A. Giá trị mà hàm trả về sau khi thực thi.
B. Biến được khai báo bên trong thân hàm.
C. Biến được liệt kê trong dấu ngoặc đơn của định nghĩa hàm, dùng để nhận giá trị khi gọi hàm.
D. Một khối mã thực thi khi hàm được gọi.
4. Đoạn mã `def multiply(x, y=2): return x * y` được gọi với `multiply(5)`. Giá trị trả về là bao nhiêu?
5. Xét đoạn mã sau: `def greet(name): print(fHello, {name}!)`. Khi gọi hàm này với `greet(Alice)`, kết quả hiển thị trên màn hình là gì?
A. Hello, Alice!
B. None
C. Alice
D. Lỗi cú pháp
6. Đâu là đặc điểm của hàm có tên recursive function trong Python?
A. Hàm này chỉ gọi một lần duy nhất.
B. Hàm này gọi lại chính nó trong thân hàm.
C. Hàm này luôn trả về giá trị None.
D. Hàm này chỉ nhận duy nhất một tham số.
7. Trong Python, một hàm có thể được khai báo mà không có tên cụ thể, gọi là hàm gì?
A. Hàm định danh (Named function).
B. Hàm ẩn danh (Anonymous function) hay Lambda function.
C. Hàm nội bộ (Inner function).
D. Hàm trả về (Return function).
8. Hàm `print()` trong Python được sử dụng để làm gì?
A. Nhận đầu vào từ người dùng.
B. Thực hiện các phép toán số học.
C. Hiển thị dữ liệu ra màn hình console.
D. Tạo ra các biến mới.
9. Đâu là lợi ích chính của việc sử dụng hàm trong lập trình?
A. Làm cho mã nguồn dài hơn và khó hiểu hơn.
B. Tăng khả năng lặp lại mã và giúp quản lý mã nguồn dễ dàng hơn.
C. Chỉ cho phép thực thi mã một lần.
D. Giảm hiệu suất chạy của chương trình.
10. Một hàm trong Python có thể có nhiều câu lệnh return không?
A. Không, chỉ được phép có một câu lệnh return.
B. Có, nhưng chỉ khi chúng nằm trên các dòng khác nhau.
C. Có, nhưng chỉ một câu lệnh return sẽ được thực thi (câu lệnh đầu tiên gặp phải sẽ thoát hàm).
D. Có, và tất cả chúng sẽ được thực thi.
11. Biến được khai báo bên trong một hàm gọi là biến gì?
A. Biến toàn cục (Global variable).
B. Biến cục bộ (Local variable).
C. Biến tham số (Parameter variable).
D. Biến tĩnh (Static variable).
12. Đoạn mã `def add_numbers(a, b): return a + b` định nghĩa một hàm. Kết quả của `add_numbers(5, 3)` là gì?
13. Đâu là sự khác biệt chính giữa tham số (parameter) và đối số (argument) trong ngữ cảnh hàm Python?
A. Tham số là giá trị được truyền vào, đối số là biến nhận giá trị.
B. Tham số là biến trong định nghĩa hàm, đối số là giá trị thực tế truyền vào khi gọi hàm.
C. Không có sự khác biệt, chúng là hai thuật ngữ đồng nghĩa.
D. Tham số luôn là số, đối số luôn là chuỗi.
14. Đoạn mã: `def process_data(data): for item in data: print(item)`. Nếu gọi `process_data([1, 2, 3])`, kết quả nào sẽ được in ra màn hình?
A. 1 2 3
B. [1, 2, 3]
C. 1\n2\n3
D. Lỗi
15. Nếu một hàm không có câu lệnh return rõ ràng, nó sẽ trả về giá trị nào mặc định?
A. 0
B. (chuỗi rỗng)
C. None
D. False
16. Khi gọi một hàm với đối số từ khóa (keyword argument), thứ tự của các đối số có quan trọng không?
A. Có, luôn phải theo đúng thứ tự của các tham số trong định nghĩa hàm.
B. Không, miễn là tên của đối số khớp với tên của tham số.
C. Chỉ quan trọng nếu có nhiều hơn hai đối số.
D. Có, nhưng chỉ khi sử dụng tham số vị trí.
17. Trong Python, từ khóa nào được sử dụng để trả về một giá trị từ hàm?
A. return
B. yield
C. send
D. exit
18. Đâu là cách đúng để gọi một hàm có tên là `calculate_area` với hai đối số là 10 và 5?
A. calculate_area(10, 5)
B. calculate_area 10 5
C. call calculate_area(10, 5)
D. execute calculate_area(10, 5)
19. Khi sử dụng `**kwargs` trong định nghĩa hàm Python, `kwargs` sẽ là kiểu dữ liệu gì?
A. Một tuple.
B. Một list.
C. Một dictionary.
D. Một set.
20. Hàm trong Python có thể nhận bao nhiêu đối số (argument) khi được gọi?
A. Chỉ một đối số.
B. Chỉ hai đối số.
C. Số lượng đối số phụ thuộc vào cách hàm được định nghĩa, có thể là không, một hoặc nhiều đối số.
D. Tối đa là 10 đối số.
21. Khái niệm phạm vi của biến (variable scope) trong hàm Python đề cập đến điều gì?
A. Tổng số byte mà biến chiếm trong bộ nhớ.
B. Vùng trong chương trình nơi biến có thể được truy cập và sử dụng.
C. Thời gian tồn tại của biến trong bộ nhớ.
D. Kiểu dữ liệu của biến.
22. Khi sử dụng `*args` trong định nghĩa hàm Python, `args` sẽ là kiểu dữ liệu gì?
A. Một dictionary.
B. Một list.
C. Một tuple.
D. Một set.
23. Trong các kiểu tham số sau, kiểu nào được gọi là tham số vị trí mặc định (default positional parameter) trong Python?
A. name
B. name=Guest
C. *args
D. **kwargs
24. Nếu bạn định nghĩa một hàm với tham số có giá trị mặc định, ví dụ `def greet(name=World):`, và gọi nó chỉ với `greet()`, giá trị của `name` bên trong hàm sẽ là gì?
A. None
B. Lỗi
C. World
D. Một chuỗi rỗng
25. Để truy cập hoặc sửa đổi một biến toàn cục bên trong một hàm, bạn cần sử dụng từ khóa nào?
A. local
B. global
C. nonlocal
D. static