实例代码如下
def demo():
print("开始执行...")
while 1:
res = yield '这是返回值'
print("res:",res)
d1 = demo()
print(d1)
print(next(d1))
print("*"*20)
print(next(d1))
执行结果如下:
开始执行...
这是返回值
********************
res: None
这是返回值
代码解释,个人理解,说得不对希望能够点出:
d1 = demo();生成一个对象,不会输出任何内容
print(d1); 这里不输入任何内容,因为程序第一次遇到yield就暂停了,即使yield前面有输出语句,一样给输出
print(next(d1)); 程序会接着yield继续执行,第二次遇到yield,return“这是返回值”,加起来就会会输出开始执行...
这是返回值
print(next(d1));再次执行next(d1),相当于第三遇到yield,因为上一步相当于被return,res并没有赋值,所以为None,继续执行while,第四次遇到yield,输出“这是返回值”
您可能感兴趣的文章:Python yield生成器和return对比代码实例Python基于yield遍历多个可迭代对象对python中return与yield的区别详解python yield和Generator函数用法详解Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例python异步编程 使用yield from过程解析Python generator生成器和yield表达式详解