转载:https://www.cnblogs.com/xhcdream/p/8304953.html
https://www.cnblogs.com/wushuaishuai/p/9212812.html
send方法和next方法唯一的区别是在执行send方法会首先把上一次挂起的yield语句的返回值通过参数设定,从而实现与生成器方法的交互。
但是需要注意,在一个生成器对象没有执行next方法之前,由于没有yield语句被挂起,所以执行send方法会报错。
因为当send方法的参数为None时,它与next方法完全等价。但是注意,虽然这样的代码可以接受,但是不规范。所以,在调用send方法之前,还是先调用一次next方法为好。
#生成器的send用法 generator.send(value) def test(): i = 1 while i < 5: temp = yield i**2 print(temp) i += 1 t = test() #第一次运行只能使用next或者send(None) print(t.__next__()) #send的作用相当于使生成器继续运行,并且传递的参数为yield的返回值(程序中即temp的值) print(t.send("Hello World")) print(t.__next__())#相当于send(None) 此时temp = None