python里的生成器--yield
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,Python的生成器是个很强大的东西,特别是在python3.0版本以后。以最简单的方式让大家快速理解生成器。1、正常的写法来看个例子,比如输出一个自定义长度的列表一般这么写:这里传入的参数时10,所
千家信息网最后更新 2026年11月02日python里的生成器--yield
Python的生成器是个很强大的东西,特别是在python3.0版本以后。以最简单的方式让大家快速理解生成器。
1、正常的写法
来看个例子,比如输出一个自定义长度的列表一般这么写:
这里传入的参数时10,所以会得到一个包含10个元素的列表:
那当我传入的是10W的时候,那生成的这个列表就很大了,也占内存,运行脚本也占cpu。
2、改良后写法
改良一下代码,把他写成一个迭代的类:
这里面self.b就记录了每次执行next方法的位置,知道每次是第几次执行next方法,所以执行保证了每次输出的是期望的值,其实这就是迭代了,每运行一次函数都被记录已运行的状态。当被调用的时候才返回值,否则就处于等待被调用的状态
运行结果:
所以这改良后的代码就解决了当你输入10W的时候占用资源的问题,因为输入10W后,只要当调用next函数的时候才返回值,不是一次返回一个那么大的列表出来。
3、生成器
那么第二步中的代码跟第一步比起来又太多了感觉,那么生成器就来了
再改良代码:
只需改下第一步中的代码a.append(n)为yield n,这就是一个生成器了,然后通过for语句来调用生成器的值。
任何一个带有yield语句的函数都是生成器,当你直接调用这个函数时,内部的代码是不会被执行的,只有调用yield里面的next函数才会去执行代码,for循环也就是会自动去调用这个next函数来输出值。
可以理解为一个函数被yield中断了,下载再次调用时继续从上一次中断的位置继续执行代码并返回值。
讲的比较简单,不知道大家理解了没有。
生成
代码
生成器
函数
时候
运行
输出
位置
写法
就是
方法
状态
语句
输入
迭代
强大
很大
一次函数
东西
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新华互联网科技学校
网络科技有限互联网
中资互联网科技
互联网科技金融
互联网科技上市公司
时间互联网络科技
菲比寻常互联网科技
青海省互联网新科技
互联网科技产品
互联网软件和科技
米聚互联网科技南京有限公司排面
每天都有哪些好的互联网科技
半导体是互联网高科技吗
神州科技互联网有限公司
互联网科技企业商标注意事项
互联网科技新闻
互联网科技和医药行业
众联互联网络科技
现代互联网科技公司
广州全民伙伴互联网科技有限公司
互联网 科技创业
奇酷互联网络科技公司
哈尔滨秒房互联网科技有限公司
须眉科技是互联网公司吗
西安小鹰速贷互联网科技有限公司
爱医互联网络科技
明优互联网科技有限公司
21世纪互联网科技成就
玉溪新华互联网科技怎么选
知域互联网科技有限公司官网