本位目标人群是拥有Python基础的开发者,主要目的是用通俗的语言讲Python生成器函数的特性,方法,和使用。
前言
生成器是Python高级编程中重要的知识点,我们平常调用的库其中有不少生成器的使用,但我们自己很少制作他,今天我们来自己写一个生成器并了解其工作原理。
以下是本篇文章正文内容,下面案例可供参考
一、生成器是什么?
2,这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。你通过遍历 来使用它们,要么用一个“for”循环,要么将它们传递给任意可以进行迭代的函数和结构。大多数时候生成器是以函数来实现的。然而,它们并不返回一个值,而是yield(暂且译作“生出”)一个值。
我们来用人话解释一下这两条:
1,迭代器大家都非常熟悉了,在这里不过多赘述了,生成器是迭代器的一种,是一个可迭代的对象,但是我们只能迭代一次,也就是我们在for循环迭代的时候,每次只能够得到一个值。
2,因为生成器没有把所有值存在内存中,而是不断生成,所以它相比普通的迭代器和循环存储在列表更省内存。
通过解释我们知道,生成器是迭代器的细分,它跟迭代器有一样的迭代方法,也更省内存。我们来通过一个简单的对比来理解一下;
首先看这个例子:
# 如果我们要打印1-10这样的数据,用最常用的方法是使用range函数,range函数相当于生成了一个内容为1-10的列表
# 但是如果1-1000000呢?随着极限的增大,range生成的列表占用内存越来越大,而且这个列表的长度是不确定的
for i in range(1, 11):
print(i)
这样来打印1-10实际上就是创建了一个元素为1-10的列表,所以如果我们要取的极限太大,那列表就会