`
rstevens
  • 浏览: 94498 次
  • 性别: 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程序设计:菜单生成器.pptx

    菜单生成器 任务 菜单生成器 任务背景 运用元组相关知识,编写一个程序,要求输入菜品和它的价格,格式化打印该菜单。 本案例主要针对元组的基本使用的考察,元组是不可变序列,创建元组可以通过()创建,也可以通过...

    2019千峰Python超详细入门教程(百度云盘分享).docx

    ├─千锋Python教程:第08章 迭代器&生成器&偏函数(6集) │ 千锋Python教程:45.可迭代对象&列表生成式&生成器1.mp4 │ 千锋Python教程:46.可迭代对象&列表生成式&生成器2.mp4 │ 千锋Python教程:47.可迭代对象&...

    Python脚本:全身训练动作随机生成器

    动作随机生成:每次运行脚本时,它会从每个部位的动作库中随机选择10个动作,为你提供新鲜的训练组合,避免单调性。 灵活定制:你可以根据自己的需求自定义每个部位的动作库,添加或删除动作,以适应个人健身计划。...

    python —— 简单的验证码生成器

    python —— 简单的验证码生成器

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

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

    Python代码生成器1.0内测版

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

    基于Python语言的车牌自动生成器软件设计与实现

    本设计基于Python语言设计并实现了一个自动生成不同场景和不同规格的车牌图片的软件。车牌数据集主要包括两大部分:车牌图片以及对应的信息标注文件。首先,通过图像处理技术生成车牌图片,车牌的字符和外观规格均...

    基于Python词云生成器

    基于python实现的的免安装词云生成器——使用python实现文章的词云图的绘制,然后需要具有交互界面,并且能够在没有python环境的电脑下运行,方便不懂编程的人直接使用。

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

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

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

    # NFT人物头像随机生成器Python源码 1. 提供眼睛、眉毛、鼻子、脸等多部位图层素材; 2. 随机合成人物头像,可作为NFT艺术品。

    全国计算机等级考试二级python的学习笔记

    全国计算机等级考试二级Python学习笔记可以从以下几个方面进行总结: ... - Python迭代器和生成器:迭代器协议、生成器函数和生成器表达式。 - Python函数式编程:Lambda表达式、高阶函数、闭包等概念。

    艺术签名生成器python版

    艺术签名生成器python版

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

    迭代器概述: 访问集合元素的一种方式。 是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退。 1. 创建迭代器对象 实例:基于list列表...

    基于Python的DbFaker数据生成器源码

    项目名称:DbFaker - 基于Python的数据生成器 项目简介: DbFaker是一个基于Python开发的数据生成工具,旨在数据库层面批量生成具有逻辑关联的仿真数据。该项目由纯Python代码编写,结合Shell脚本,提供了高效、...

    汽车VIN码生成 python

    Python版的汽车WIN码生成器 汽车行业可能需要

    python二维码生成器

    python二维码生成器

    nimi-python:NI模块化仪器驱动程序的Python绑定

    作者国家仪器关于nimi-python存储库生成Python绑定(应用程序编程接口)以与模块化仪器驱动程序进行交互。 支持以下驱动程序: NI-DCPower(Python模块:nidcpower) NI-Digital Pattern Driver(Python模块:...

    Python程序内核新款海报生成器网站最新源码

    2021 年海报生成器网站最新源码,最左侧是组件列表。可以在最左侧选择组件,比如文本、二维码、图片等添加到最中间的画布区域,通过右侧的属性调节面板调节添加组件的样式。 快速:三步完成海报开发工作:启动服务 ...

    python3 简单密码生成器

    利用Python3的模块,实现简单的密码生成器,通过指定组成密码的字符及密码长度,生成全部组合的密码。

    Python-pythonqrcode一个纯Python实现的二维码生成器

    python-qrcode:一个纯 Python 实现的二维码生成器

Global site tag (gtag.js) - Google Analytics