成都网站建设设计

将想法与焦点和您一起共享

python中send方法的实例

这篇文章主要介绍“python中send方法的实例”,在日常操作中,相信很多人在python中send方法的实例问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中send方法的实例”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联公司是由多位在大型网络公司、广告设计公司的优秀设计人员和策划人员组成的一个具有丰富经验的团队,其中包括网站策划、网页美工、网站程序员、网页设计师、平面广告设计师、网络营销人员及形象策划。承接:成都网站制作、成都网站建设、网站改版、网页设计制作、网站建设与维护、网络推广、数据库开发,以高性价比制作企业网站、行业门户平台等全方位的服务。

yield from从容器中取值

yield from从容器中取值,容器包含生成器,也就是说yield from让一个生成器将其部分操作委派给另外一个生成器。

def reverse(x):
    while x-1>=0:
        yield x-1
        x -=1

def list_number(x):
    yield from range(x)
    yield from range(x-1, -1, -1)
    yield from reverse(x)

for i in list_number(3):
    print(i,end=',')

out:
0,1,2,2,1,0,2,1,0,

关于send方法的案例

def count():  # 子生成器,将yield传来的数字累加,若传来的值为None,则返回累加结果
    result = 0
    while 1:
        x = yield
        if x is None:
            return result
        result += x


def count_list(x):  # 父生成器,将累加任务委托给子生成器
    while 1:
        y = yield from count()
        x.append(y)


plus_list = []
cal = count_list(plus_list)
next(cal)  # 使生成器可以接收传入值
for i in range(1, 5):
    cal.send(i)
cal.send(None)  # 实际收到None的是count函数,结束累加

for i in range(1, 11):
    cal.send(i)
cal.send(None)  # 结束第二次累加

print(plus_list)  # 输出最终结果

out:
[10, 55]

send方法两个注意点

  1. send方法要配合yield语句使用。

  2. send方法可以给yield传值,但yield尚未产生断点时传值会报错,所以先要对生成器执行一次next,然后才能正常传值。

深入理解send和yield from机制

send和yield from配合可以在调用者和生成器之间形成透明的双向数据通道,包括从生成器获取数据以及向生成器传送数据。

要更加深入理解send和yield机制需要学习和理解协程相关的知识点。留待日后梳理协程知识点时再细讲send和yield from。

到此,关于“python中send方法的实例”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


当前名称:python中send方法的实例
文章出自:http://chengdu.cdxwcx.cn/article/ihjcce.html