JavaScript is required

Kết quả nào là output của đoạn code dưới đây?
def f(value): while True:
value = (yield value)
a = f(10)
print(next(a))
print(next(a))
print(a.send(20))

A.
10 10
B.
10 10 20
C.
10 None 20
D.
10 None None
Trả lời:

Đáp án đúng: C


Đoạn code định nghĩa một generator `f` nhận một giá trị ban đầu `value`. Generator này liên tục trả về giá trị hiện tại của `value` và sau đó cập nhật `value` bằng giá trị được gửi đến thông qua `send()`. 1. `a = f(10)`: Khởi tạo generator `f` với giá trị ban đầu là 10. 2. `print(next(a))`: Lần gọi `next(a)` đầu tiên sẽ in ra giá trị ban đầu của `value`, tức là 10. Generator tạm dừng ở dòng `value = (yield value)`. 3. `print(next(a))`: Lần gọi `next(a)` thứ hai tiếp tục generator. Vì không có giá trị nào được gửi đến thông qua `send()`, `value` được gán giá trị `None` (giá trị mặc định khi không gửi gì). Sau đó, `yield value` trả về `None` và in ra màn hình. 4. `print(a.send(20))`: Lệnh `a.send(20)` gửi giá trị 20 vào generator. `value` được gán bằng 20. Sau đó, `yield value` trả về 20 và in ra màn hình. Vậy, output của đoạn code là: 10, None, 20.

Tổng hợp 200 câu hỏi trắc nghiệm lập trình Python có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan