1、send

Send方法和next方法类似,可以用来触发生成器的下一个yield,但是send不但能触发,还能发送数据过去,作为yield表达式的值

例:

第一个next:执行第一遍的时候到yield冻结

第二个next:从yield开始恢复,然后给temp整体返回了None,然后打印temp,然后自加1,然后在第二遍的时候到yield冻结,返回start的值

注意:如果使用next函数执行yield,那么yield xxx 永远返回None,但是由yield返回的start是有真的值,返回了start的值

通过send函数,就可以对yield xxx这个表达式进行赋值,所以temp获得到了值为Qiubai,之前没有获得表达式的值,因为yield xxx整体返回的是None

2、send的注意

Send()不能作为第一轮循环的开始,会报错,意思是不能传一个不是None的值给一个刚刚开始的生成器

如果要在第一次运行的时候使用send函数,那么传的值就必须是None,如下

3、生成器中出现return

如果生成器中出现return语句,就会触发StopIterator异常,就是因为return之后后面的语句就不在执行了。