01/10/2018, 17:13

Giúp đỡ về cách hiểu lệnh yield

Xin chào các bạn mình đang làm quen với python , mình có 2 đoạn code tại sao đoạn code 2 mỗi lần gởi giá trị lên phải gọi next(g) lại nữa

...     for i in range(4):
...             x = yield i
...             print('value sent from you', x)
...
>>> g = gen() # gán generator này cho biến g
>>> next(g) # gọi hàm next để chạy lệnh yield "x = yield i"
0
>>> g.send('XXXX') # x vừa nãy khi gán cho biến yield giờ sẽ được gửi giá trị
value sent from you XXXX
1
>>> g.send('XXXXXX')
value sent from you XXXXXX
2
>>> next(g) # lần này ta không dùng send, mặc định giá trị gửi vào là None
value sent from you None
3
>> def gen():
...     while True:
...             x = yield # ở đây ta đang yield None, vì ta không cần thiết sinh giá trị gì ở  đây
...             yield x ** 2
...
>>> g = gen()
>>> next(g) # chạy lệnh yield để ta gửi giá trị cho biến x lần sau
>>> g.send(2)
4
>>> next(g) # tiếp tục chạy yield để có thể gửi giá trị
>>> g.send(10)
100
Trương Tấn Phát viết 19:22 ngày 01/10/2018

next(g): chạy yield thứ nhất.
g.send(): chạy yield thứ hai.

Vĩ Huỳnh viết 19:25 ngày 01/10/2018

Tại sao đoạn code 1 chỉ cần một lần next thôi vậy bạn

Bài liên quan
0