我们来谈谈发电机｡
一个非常重要的关键术语和相当先进的话题｡
它们是什么？
Python中提供了生成器, 它允许我们生成一个随时间变化的值序列｡
嗯嗯嗯
那是什么意思？
让我们来探索一下｡
你看, 我们以前学过发电机｡
你还记得射程吗？
范围是发电机｡
但那是什么呢？
生成器是Python中的一种特殊类型的东西, 它允许我们使用一个特殊的关键字, 叫做yield,
它可以暂停和恢复函数｡
让我用一个小例子来说明｡
你看我们用范围之类的词｡
诗句说的东西像列表｡
假设我们将一个区域转换为列表｡
就像这样｡
一份名单｡
它实际上是创建一个巨大的列表, 比如说, 在内存中有100个项目, 在我们的计算机内存中,
而不是一个范围｡
它一个接一个地创造它们｡
让我来告诉你｡
如果我创建一个函数, 我们称之为make list.
而这个make list将要接受｡
一个数字｡
这个make列表, 我们会说result等于一个空数组, 然后我会说I在的范围内｡
我们要把result加到点append上, 然后把它相乘｡
我倍来｡
最后我们返回结果｡
你看, 当我们列一个清单, 就像我们刚才做的, 我们基本上是这样做的｡
我们使用range来创建一个列表, 并返回将保存在内存中的结果｡
假设这里有一个make list, 我会说我的list等于make list 100.
我打印的时候｡
我的清单｡
然后单击“Run（运行）”｡
哦, 我的天
并确保我的｡
这里的参数是正确的名称｡
确保我能拼出append｡
我们拿到名单了｡
但这份名单活在我们的记忆里｡
我的列表指向内存中的一个位置｡
所以现在这个占了很多地方｡
现在, 范围是一个发电机｡
生成器有点不同, 因为当我们执行for循环时, 它并没有保存在内存中｡
这个范围本身并不产生一个巨大的列表, 比如说0到99｡
然后它开始迭代｡
不, 对于for循环它会说, 嘿, 作为一个范围我会先给你0, 然后给你1,
然后是2, 3, 4一直到100｡
所以在内存中, 它从来没有创建过这个列表, 就像我们创建我的列表一样｡
这会让你很紧张, 对吧？
假设我们要创建一个巨大的列表｡
现在, 假设我想使用创建一个列表｡
好吧, 我知道了
这整个阵法｡
如果我想的话, 就在这里打印吧｡
这张巨大的名单, 我点击运行｡
哦, 天哪｡
你看到了吗？
我用掉了很多内存｡
一旦完成｡
但现在还没找到｡
只有这样我才能使用这个列表, 它将访问内存中的列表｡
然后我们就可以使用它了, 一个更有效的方法是使用一个生成器, 一次生成一个,
而不占用内存空间｡
现在为了让我们学习如何使用发电机, 以及如何实际使用它们, 我们需要进入下一课,
重温一些旧知识｡
我要让这一切完成｡
与此同时, 我们在下一个视频中再见｡
再见, 再见, 再见