Python yield 关键词,

 更新时间:2021年12月14日 08:38:32   作者:桀桀  
这篇文章主要介绍了Python yield 关键词,要理解yield的作用,你必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。下面文章我们就先从
迭代器开始展开yield关键词的相关自资料 ,需要的朋友可以参考一下

1.迭代器

当您创建一个列表时,你可以逐个读取它的项。逐项读取其项称为迭代:

mylist是一个可迭代的对象。当你使用列表解析式时,你创建了一个列表,因此也是一个迭代器:

所有你可以用"for... in ...."都是迭代器,包括列表、字符串、文件…等等。

这些迭代器非常方便,因为你可以随心所欲地读取它们,但是你将所有的值都存储在内存中,当你有很多值时,这就非常浪费内存了。

为了解决这样的问题,Python有了生成器的概念。

2.生成器

生成器是迭代器,这种迭代器只能迭代一次。生成器不会将所有值都存储在内存中,它们会动态生成这些值:

它和列表解析式是类似的,只是用()代替了[]。但是,你不能在mygenerator中对i执行第二次,因为生成器只能使用一次:它print(0),然后忘记它,print(1) ,最后是4。

3.Yield

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

认真看完下面这个例子,我们就能完全明白。

函数将返回一组只需要读取一次的值。如果你能将这个特性理解清楚,并将其应用到你的代码中,可能可以极大地提高性能,下次我们将介绍在什么时候该用它。

请注意示例中的第6行,在调用函数时,在函数体中编写的代码不会运行。函数只返回生成器对象,可别忘了这个重点。

最后,你的代码将从每次使用生成器时停止的地方继续。因此示例中第二次使用生成器的时候,我们的生成器已经完全没有值了。

所以最核心的逻辑如下:

  • for函数第一次调用从函数创建的生成器对象时,它将从头运行函数中的代码,直到达到yield,返回循环的第一个值。
  • 随后的调用都将再次运行你在函数中编写的循环,并yield返回下一个值,直到没有要返回的值为止,就如我们上面的例子所示

到此这篇关于Python yield 关键词,的文章就介绍到这了,更多相关Python yield 关键词内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 将python打包后的exe还原成py

    将python打包后的exe还原成py

    这篇文章主要介绍了将python打包后的exe还原成py,利用pyinstxtractor.py 拆包(解压)工具,将exe文件解压成一个文件夹<BR>uncompyle6 pyc反编译工具,需要的朋友可以参考一下
    2022-01-01
  • python 基于PYMYSQL使用MYSQL数据库

    python 基于PYMYSQL使用MYSQL数据库

    这篇文章主要介绍了python 基于PYMYSQL使用MYSQL数据库的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python3 中的几种除法介绍,小数的不同显示

    python3 中的几种除法介绍,小数的不同显示

    这篇文章主要介绍了python3 中的几种除法介绍,小数的不同显示,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python实现批量移动文件

    python实现批量移动文件

    这篇文章主要为大家详细介绍了python实现批量移动文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • python 命令行传入参数实现解析

    python 命令行传入参数实现解析

    这篇文章主要介绍了python 命令行传入参数实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python中的并发编程asyncio库入门使用

    Python中的并发编程asyncio库入门使用

    这篇文章主要为大家介绍了Python中的并发编程asyncio库入门的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Python编程技巧连接列表的八种操作方法

    Python编程技巧连接列表的八种操作方法

    这篇文章主要为大家介绍了Python编程技巧之连接列表的八种操作方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • python获取Linux发行版名称

    python获取Linux发行版名称

    这篇文章主要介绍了python获取Linux发行版名称的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Windows10下 python3.7 安装 facenet的教程

    Windows10下 python3.7 安装 facenet的教程

    这篇文章主要介绍了Windows10 python3.7 安装 facenet的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 详解Pandas之容易让人混淆的行选择和列选择

    详解Pandas之容易让人混淆的行选择和列选择

    这篇文章主要介绍了详解Pandas之容易让人混淆的行选择和列选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论