毕业论文

当前位置: 毕业论文 > 范文 >

python中yield的用法举例(2)

时间:2021-03-04 12:55来源:优尔论文
5.程序执行g.send(7),程序会从yield关键字那一行继续向下运行,send会把7这个值赋值给res变量 6.由于send方法中包含next()方法,所以程序会继续向下运行执行

5.程序执行g.send(7),程序会从yield关键字那一行继续向下运行,send会把7这个值赋值给res变量

6.由于send方法中包含next()方法,所以程序会继续向下运行执行print方法,然后再次进入while循环

 

7.程序执行再次遇到yield关键字,yield会返回后面的值后,程序再次暂停,直到再次调用next方法或send方法。

这就结束了,说一下,为什么用这个生成器,是因为如果用List的话,会占用更大的空间,比如说取0,1,2,3,4,5,6............1000

你可能会这样:论文网

for n in range(1000):

    a=n

这个时候range(1000)就默认生成一个含有1000个数的list了,所以很占内存。

这个时候你可以用刚才的yield组合成生成器进行实现,也可以用xrange(1000)这个生成器实现

yield组合:

def foo(num):

    print("starting...")

    while num<10:

        num=num+1

        yield num

for n in foo(0):

    print(n)

输出:

 

starting...

 xrange(1000):

for n in xrange(1000):

    a=n

 其中要注意的是python3时已经没有xrange()了,在python3中,range()就是xrange()了,你可以在python3中查看range()的类型,它已经是个<class 'range'>了,而不是一个list了,毕竟这个是需要优化的。 

python中yield的用法举例(2):http://www.youerw.com/fanwen/lunwen_70783.html
------分隔线----------------------------
推荐内容