python中yield,next(),send(msg)的理解

 yield:yield可以当做一个暂停/开始信号,有yield的函数是一个generator,代码运行到yield时暂停。yield x 整体就是一个表达式。

next(): 遇到表达式时暂停,返回yield表达式的中的参数 x 。此时搁置yield表达式,再次调用next()时,跳过yield,执行后面的代码。

send(msg):与next()相似,但send(msg)会将当前被搁置的yield表达式变为 msg,再执行后面的代码,直到遇到下一个yield时暂停并返回下一个表达式的参数。 所以第一次调用send时,由于当前没有yield,需要传入参数None避免报错。即send(None),这也说明了send(None)和next()是等效的。

参考资料:https://www.cnblogs.com/coderzh/articles/1202040.html

猜你喜欢

转载自www.cnblogs.com/tianzhen940331/p/9825958.html
今日推荐