生成器表达式本质上就是一个迭代器,是定义迭代器的一种方式,是允许自定义逻辑的迭代器。本文将详细讲解一下Python中生成器的原理与使用,需要的可以参考一下
我们学习完推导式之后发现,推导式就是在容器中使用一个for循环而已,为什么没有元组推导式?
原因就是“元组推导式”的名字不是这样的,而是叫做生成器表达式。
什么是生成器
生成器表达式本质上就是一个迭代器,是定义迭代器的一种方式,是允许自定义逻辑的迭代器。生成器使用generator表示。
迭代器和生成器的区别
迭代器本身是系统内置的, 无法重写内置的逻辑结构;而生成器是用户自定义的,可以重写逻辑结构。所以生成器就是一个迭代器,只是我们将自己写的迭代器叫做生成器作为区分而已。
创建方式
生成器有两种创建方式
1.生成器表达式,就是“元组推导式”
3.生成器函数,就是使用def定义,里面使用yield
关键字
生成器表达式
基本语法
1 2 3 4 5 6 7 8 |
|
生成器函数
我们上面说到,生成器函数如何定义?其实和普通的函数定义的方法是一样的,都是要使用def
关键字来定义,其它的写法没有任何要求,普通函数怎么写生成器函数就怎么写,唯一的要求就是要使用yield
关键字。
要注意,生成器函数就是一个函数,是使用了yield的函数,只不过生成器函数是用来定义生成器的。
yield关键字
yield
这个关键字其实类似于return
关键字,return
关键字的作用是在函数中使用,用来返回数据,yield
关键字的作用也是一样的,就是用来返回数据,但是和return
还有其它的不同之处。
yield和return
共同点
执行到对应语句的时候,就会返回对应的值。
不同点