Tôi nghĩ rằng tôi có thể làm cho mã python (2.7.10) của tôi đơn giản hơn bằng cách truy cập trực tiếp vào chỉ mục của một giá trị được truyền tới một máy phát qua send
, và đã làm cho mã này ngạc nhiên. sau đó tôi phát hiện ra một chỉ số áp dụng cho yield
không thực sự làm bất cứ điều gì, cũng không ném một ngoại lệ:Tại sao sản lượng có thể được lập chỉ mục?
def gen1():
t = yield[0]
assert t
yield False
g = gen1()
next(g)
g.send('char_str')
Tuy nhiên, nếu tôi cố gắng index yield
ba lần hoặc nhiều hơn, tôi nhận được một ngoại lệ:
def gen1():
t = yield[0][0][0]
assert t
yield False
g = gen1()
next(g)
g.send('char_str')
mà ném
TypeError: 'int' object has no attribute '__getitem__'
Đây là hành vi không phù hợp bất thường, và tôi đã tự hỏi nếu có một lời giải thích trực quan cho những gì indexing năng suất i thực sự đang làm gì?