python里的生成器--yield
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,Python的生成器是个很强大的东西,特别是在python3.0版本以后。以最简单的方式让大家快速理解生成器。1、正常的写法来看个例子,比如输出一个自定义长度的列表一般这么写:这里传入的参数时10,所
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
无锡编程软件开发公司
小学网络安全微课优秀作品
计算机网络技术基础招聘信息
软件开发 配置管理计划
网络安全知识主体班会简报
开通库支票服务器繁忙
2003年服务器虚拟机
网络安全培训视频课程
服务器raid安全模式
如何加强网络安全宣传
商务部网络安全学院
办理网络安全证需要多少钱
总结网络安全
美国网络安全法案颁布时间
数据库设计文档维护
冰箱软件开发
无法在数据库查到药品说明书
服务器没有接地线
网络安全国际行为准则
宁夏自然资源厅网络安全培训
怎么登录数据库视频
网络安全工程师最高
学校数据库有什么好处
单片机使用什么软件开发语言
农安正规网络技术服务品质保障
商务部网络安全学院
网络安全考研要考什么
一个数据库最少有()
mysql 数据库优化
东营制造业软件开发