Tôi cố gắng xác định chức năng của máy phát điện mycount()
có thể được đặt lại với chức năng của máy phát send(0)
như trong ví dụ bên dưới. Mọi thứ hoạt động tốt, trừ khi tôi sử dụng send(0)
trên một đối tượng máy phát mới chưa bắt đầu. Trong trường hợp này, nó cho một số TypeError
. Có chức năng nào kiểm tra xem máy phát điện đã khởi động hay tôi phải bắt giữ TypeError
và tạo một đối tượng máy phát mới với mycount(0)
trong trường hợp này?Có chức năng Python nào kiểm tra xem máy phát điện có được khởi động không?
def mycount(value):
while True:
v = yield value
if v == None:
value = value + 1
else:
value = v
g = mycount(3)
print(next(g)) # prints 3
print(next(g)) # prints 4
print(g.send(0)) # prints 0
print(next(g)) # prints 1
print(next(g)) # prints 2
g2 = mycount(3)
g2.send(0)
# TypeError: can't send non-None value to a just-started generator
Đây thực sự là một giải pháp tốt, nhưng nó chỉ hoạt động cho các chức năng của máy phát điện sử dụng trang trí này. Tôi thích cái gì đó hoạt động trên mọi máy phát điện. Vì vậy, tôi sử dụng giải pháp Rich Franks. – Holger
Đúng, giải pháp này bị hạn chế. IMO quan trọng hơn là nó thay đổi hành vi của máy phát điện. –