博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 关键字yield解析
阅读量:6458 次
发布时间:2019-06-23

本文共 998 字,大约阅读时间需要 3 分钟。

python 关键字yield解析

yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator。

yield 的好处是显而易见的,把一个函数改写为一个 generator 就获得了迭代能力,比起用类的实例保存状态来计算下一个 next() 的值,不仅代码简洁,而且执行流程异常清晰

# eg_v1 建立一个列表,逐项地读取这个列表,那么这个列表就是一个可迭代对象。

>>> mylist = [1,2,3,4,5]>>> for i in mylist:... print i... 12345

  

使用一个列表生成式来建立一个列表的时候,也是建立了一个可迭代的对象

>>> mylist = [x * x for x in range(5)]>>> for i in mylist:... print i... 014916

注:使用 for .. in .. 语法的叫做一个迭代器:列表,字符串,文件等,缺点是内存开销大

生成器
生成器是可以迭代的,但是只可以读取它一次 ,因为它并不把所有的值放在内存中,它是实时地生成数据。

>>> mygenerator = (x * x for x in range(5))>>> for i in mygenerator:... print i... 014916

  

yield关键字

yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器

>>> def createGenerator():... mylist = range(5)... for i in mylist:... yield i * i... >>> >>> mygenerator = createGenerator()>>> print (mygenerator)
>>> for i in mygenerator:... print i... 014916>>>

可以理解:当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象,使用for进行迭代的时候,执行函数内的代码

 

转载于:https://www.cnblogs.com/xieshengsen/p/6896933.html

你可能感兴趣的文章
maven的错误记录
查看>>
数据库运维体系_SZMSD
查看>>
aspose 模板输出
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
selenium多个窗口切换
查看>>
《单页面应用》所获知识点
查看>>
静态库 调试版本 和发布版本
查看>>
DB2 错误码解析
查看>>
读书笔记四
查看>>
JAVA中的finalize()方法
查看>>
慕课网学习手记--炫丽的倒计时效果Canvas绘图与动画基础
查看>>
==与equals()的区别
查看>>
TCP三次握手四次挥手相关问题探讨
查看>>
基本分类方法——KNN(K近邻)算法
查看>>
在XenCenter6.2中构建CentOS7虚拟机的启动错误
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>
WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载...
查看>>
C# 自定义事件整理项目 - EventDemo
查看>>