目录

一.概念

二.生成器基础

1.生成器函数

2.有返回值的生成器

3.创建一个生成器,生成一个生产线

4.send()函数

5.用一个生成器,求平均数

6.yield form

7.生成器表达式


一.概念

生成器的本质就是迭代器。

生成器包括两种:生成器函数和生成器表达式

二.生成器基础

1.生成器函数

一个包含yield关键字的函数就是一个生成器函数。并且yield不能和return共用,并且yield只能用在函数内。

(1).生成器函数执行之后会得到一个生成器作为返回值,并不会执行函数体。

(2).执行了__next__()方法之后才会执行函数体,并且获得返回值。

(3).next()内置方法,内部调用生成器函数的__next__()方法。

(3).yield和return相同的是可以返回值,但是不同的是yield 不会结束函数

 

我们要明白的是:

next(函数地址)等价于 函数地址.__next__()

python-生成器

python-生成器

2.有返回值的生成器

python-生成器

3.创建一个生成器,生成一个生产线

python-生成器

我把代码放在下面,大家可以试试:

def ksf():
    for i in range(1,2000001):
        yield "正在生产第{}桶方便面".format(i)
a = ksf()

#第一种方法
for i in range(1,2000001):
    print(next(a))
#第二种方法
for fbm in a:#a 是一个迭代器,我们用for循环一个一个取出来
    print(fbm)

 

4.send()函数

send 获取下一个值的效果和next()基本一致,只是在获取下一个值的时候,给上一yield的位置传递一个数据

使用send的注意事项

(1).第一次使用生成器的时候 是用next获取下一个值

(2).最后一个yield不能接受外部的值

python-生成器

5.用一个生成器,求平均数

python-生成器

6.yield form

可以遍历生成器的迭代器

python-生成器

7.生成器表达式

格式:将列表解析式[] 改成 () 即可。

python-生成器

结果如下:

python-生成器

 

 

相关文章:

  • 2021-09-20
  • 2021-10-07
猜你喜欢
  • 2021-12-07
  • 2021-06-10
  • 2021-10-04
  • 2021-10-13
相关资源
相似解决方案