委托生成器问题

来源:12-9 生成器进阶-yield from-2

东泽XD

2020-09-22

1. 子生成器生产的值,都是直接传给调用方的;调用方通过.send()发送的值都是直接传递给子生成器的;如果发送的是 None,会调用子生成器的__next__()方法,如果不是 None,会调用子生成器的.send()方法;

#2 当调用方使用next()或者.send(None)时,都要在子生成器上调用next()函数,当调用方使用.send()发送非 None 值时,才调用子生成器的.send()方法;

这两句话不是很理解,如果调用方send(None)的时候委托生成器调用子生成器next方法那么子生成器怎么退出?

#子生成器
 while True:
        term = yield  # <2>
        if term is None:  # <3>
            break
   
写回答

1回答

东泽XD

提问者

2020-09-22

自习看伪代码的话好像并没有这个意思,只是第一步预激委托生成器的时候不管你用哪种方法委托生成器都是用next进行预激子生成器。(而且next和send(None)效果好像是等价的)

0
0

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程