python生成器方法send的使用

def f():
    a,b=1,1
    while True:
        v=(yield a)
        if v:
            a=v
        a,b=b,a+b
a=f()
for i in range(5):
    print(a.__next__())
print(a.send(50))
print(next(a))
    
>>1
>>1
>>2
>>3
>>5
>>8 #按理说这里应该是50才对但为什么是8??实际上是当我使用a.send(50)时相当与使用一次next(),首先注意的是:再次执行程序是从yield之后的语句开始执行的,等再次执行一次yield之后结束。send会将我们传入的值当作上次执行保留的值使用。所以如上面程序,50给了a没错,但是a,b=b,a+b将b给了a等执行yield时就输出了8,当再执行next()时就是输出58了。
>>58

上面的函数是生成斐波那契数列。使用send()方法改变了数列的输出顺序。主要的目的是探究send()的使用方法。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yhb_csdn/article/details/79974974
个人分类: python语言
上一篇利用U盘给电脑安装centos7操作系统
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭