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
Bài liên quan
next(g)
: chạy yield thứ nhất.g.send()
: chạy yield thứ hai.Tại sao đoạn code 1 chỉ cần một lần next thôi vậy bạn