`
rstevens
  • 浏览: 95684 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python学习: Python的生成器

阅读更多
1、 什么是生成器
生成器是执行一个带 yield 语句的函数所返回的对象

def foo():
	yield 1
	yield 2
	
f = foo()



其中, type(foo) 是 function, 而 type(f) 是 generaotr

2、 生成器同时是迭代器
生成器对象,实现了 __iter__() 和 next() ,因此,生成器同时是一个 iterable 对象,即“可迭代”对象,可出现在 iterable 对象出现的场合。


3、 为什么需要生成器?
生成器的特点,在于它可以记住运行状态

以 foo() 函数为例,第一次调用的时候,返回 1,并记住已经执行到这里了; 第二次调用的时候,则返回2; 第三次调用的时候,抛出 StopIterator 异常


4、 生成器的本质

对一个函数来说,如果需要记住一些执行状态,那么:
1)、 如果是一个普通函数,状态一定保存在函数体之外,也就是要用到全局变量(或静态全局变量),破坏了封装性。
2)、 如果是一个类的成员函数,则通常将状态保存在类的成员变量中, 封装性很好。

生成器吸取两种方式的长处, 在普通函数的简捷形式的基础之上,又不破坏封装性,并达到了记录状态的目的,符合 python 一贯的简捷高效的风格。


5、 生成器表达式
除了用带 yield 语句的函数以外,还可以通过“生成器表达式”来创建生成器

生成器表达式采用类似“列表解析”的语法,返回的结果是一个生成器

例如:

gen = (x for x in xange(10) if x % 2 == 0)


返回的 gen 就是一个生成器。


“列表解析”, 返回的是一个列表,列表中所有的对象都被创建了; 如果列表很大,就会非常占用内存;
而生成器表达式仅返回一个生成器,因此在内存使用上更有效
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    python-qrcode:二维码生成器

    python-qrcode:二维码生成器

    Python实战示例艺术签名生成器.zip

    Python实战艺术签名生成器Python实战艺术签名生成器Python实战艺术签名生成器Python实战艺术签名生成器Python实战艺术签名生成器Python实战艺术签名生成器Python实战艺术签名生成器Python实战艺术签名生成器Python...

    Python实战示例 二维码生成器.zip

    Python实战二维码生成器Python实战二维码生成器Python实战二维码生成器Python实战二维码生成器Python实战二维码生成器Python实战二维码生成器Python实战二维码生成器Python实战二维码生成器Python实战二维码生成器...

    Python编程三剑客第3版:Python编程从入门到实践第3版快速上手第.pptx

    8. 生成器:包括生成器的定义、使用和注意事项等。 9. 上下文管理器:包括上下文管理器的定义、使用和注意事项等。 10. 泛型编程:包括泛型编程的基本概念、类型注解等。 11. 测试编程:包括测试用例的编写、测试...

    最经典的Python教程:Python基础教程(第3版)

    函数式编程是Python的一个重要特性,教程会讲解函数式编程思想,如高阶函数、map、filter和reduce等,以及列表推导式和生成器表达式的使用。Python的异常处理机制也是学习的重点,通过try-except语句可以捕获并处理...

    Python语言基础:迭代器和生成器.pptx

    迭代器和生成器是Python编程中的重要概念,特别是在处理大量数据或进行高效内存管理时,它们的优势尤为明显。本文将详细讲解这两个概念及其在Python语言中的应用。 **迭代器** 迭代器是Python中访问集合元素的一种...

    Python 实例 - 二维码生成器 Python源码

    Python 实例 - 二维码生成器 Python源码Python 实例 - 二维码生成器 Python源码Python 实例 - 二维码生成器 Python源码Python 实例 - 二维码生成器 Python源码Python 实例 - 二维码生成器 Python源码Python 实例 - ...

    基于Python词云生成器

    在本案例中,我们关注的是一个基于Python实现的免安装词云生成器,它特别适合那些不熟悉编程环境设置或对Python无了解的用户。 首先,Python作为一种强大的编程语言,拥有丰富的库资源,其中`wordcloud`库是用于...

    Python 作品:情人节 Python 创意代码.zip

    通过生成器函数和随机数库,Python可以自动生成一系列有趣或感人的爱情小故事,每个故事都有不同的情节和结局,增加情人节的趣味性。 6. **情感机器人对话**: 利用对话生成模型(如Hugging Face的Transformer库...

    NFT人物头像随机生成器Python源码

    在这个特定的项目中,"NFT人物头像随机生成器Python源码" 是一个利用Python编程语言编写的程序,用于创建具有独特设计的人物头像,这些头像可以被用作NFT艺术品的基础。通过这个程序,用户可以生成一系列随机组合的...

    Python 实例 - 艺术签名生成器 Python源码

    Python 实例 - 艺术签名生成器 Python源码Python 实例 - 艺术签名生成器 Python源码Python 实例 - 艺术签名生成器 Python源码Python 实例 - 艺术签名生成器 Python源码Python 实例 - 艺术签名生成器 Python源码...

    Python-学习用生成对抗网络来生成猫的图片一个玩具项目

    2. 构建生成器和判别器:定义各自的网络结构,可能包括卷积层、反卷积层以及激活函数等。 3. 损失函数和优化器:选择合适的损失函数(例如交叉熵)和优化器(如Adam)来衡量模型的性能并更新权重。 4. 训练循环:...

    Python代码生成器1.0内测版

    您是否在学习Python的路程中感觉路程漫漫?是否曾经半途而废? 是否感觉该学的内容众多? 因为先前编过《信手拈来按键帮你来》所以这里秉承了它的理念。 以Delphi语言开发的,内置百款实例代码,从速借鉴、高效开发...

    Python代码生成器内测版1.0.7z

    【Python代码生成器内测版1.0.7z】是一个专为Python编程语言设计的工具,用于自动化代码编写过程,提升开发效率。这个版本是内测版,意味着它可能包含一些试验性的功能或者尚未公开的功能,用户在使用时需要有一定的...

    Python 中迭代器与生成器详解及其应用实例

    内容概要:本文详细介绍了 Python 中的迭代器和生成器的概念、创建方法及其应用场景。首先解释了迭代器的基本概念、创建方法以及应用场景,如处理大型数据集和实现自定义遍历逻辑。接着介绍了生成器的概念,展示了...

    艺术签名生成器python版

    艺术签名生成器是一种工具,它使用编程语言,如Python,来创建独特且具有艺术感的个人签名。在Python中实现这样的工具,涉及到图形设计、图像处理以及编程技术的结合。以下是一些关于如何构建艺术签名生成器的关键...

    【源代码】深度学习入门:基于Python的理论与实现.zip

    从简单的线性层到复杂的卷积神经网络(CNN)、循环神经网络(RNN)以及生成对抗网络(GAN),每一步都将带你更接近深度学习的奥秘。同时,这个资源还可能涵盖了模型保存和加载、模型迁移学习、分布式训练等进阶主题...

    《Python学习手册》示例代码.zip

    10. **高级话题**:可能包含装饰器、生成器、上下文管理器、元编程等,这些都是Python进阶学习中的重要内容。 每个文件名“kwan1117”可能对应着书中的一个主题或章节,通过逐一解压并运行这些代码,你可以逐步跟随...

    基于Python实现的个性签名生成器源码

    综上所述,这个基于Python的个性签名生成器项目涵盖了从基础的字符串处理到复杂的图像生成与用户交互等多个方面,是学习和实践Python编程的好例子。通过深入研究和理解这个源码,不仅可以提升Python技能,还能锻炼...

Global site tag (gtag.js) - Google Analytics