0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从yield开始入门python协程

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-16 16:20 次阅读

简单介绍 yield

本篇文章会先向你介绍一个陌生的 Python 关键词,他和 return 就像一对新兄弟,有相似之处,又各有不同。

相似的是:yield 和 return 都可以在一个函数里将值返回给调用方;

不同的是:return 后,函数运行就终止了,而 yield 则只是暂停运行。

关于 yield 的简单使用,请先看如下例子

>>> def demo():
...     yield 1
...     yield 2
...     yield 3
...
>>> gen = demo()
>>> gen

>>>
>>>
>>> for i in gen:
...     print(i)
...
1
2
3

重点有如下几个:

含有 yield 的函数,不再是普通的函数,直接调用含有 yield 的函数,返回的是一个生成器对象(generator object)

可以使用 for 循环(实际还可以使用 list 或者 next 函数)来遍历该生成器对象,将 yield 的内容一个一个打印出来

向生成器中发送消息

函数暂停之后,如果调用者能在下一次恢复函数运行的时候,向它传递一些信息,那么整个程序的灵活性会大大提升。

下面通过一个简明的演示来看看,如何往生成器中发送消息:

def jumping_range(N):
    index = 0
    while index < N:
        # 通过send()发送的信息将赋值给jump
        jump = yield index
        if jump is None:
            jump = 1
        index += jump

if __name__ == '__main__':
    itr = jumping_range(5)
    print(next(itr))
    print(itr.send(2))
    print(next(itr))
    print(itr.send(-1))

输出。

0
2
3
2

这里解释下为什么这么输出。 重点是jump = yield index这个语句。

分成两部分:

1.yield index 是将index return给外部调用程序。

2.jump = yield 可以接收外部程序通过send()发送的信息,并赋值给jump


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 信息
    +关注

    关注

    0

    文章

    407

    浏览量

    35611
  • 函数
    +关注

    关注

    3

    文章

    4350

    浏览量

    63056
  • python
    +关注

    关注

    56

    文章

    4811

    浏览量

    85105
收藏 人收藏

    评论

    相关推荐

    清华大学发布:DeepSeek入门到精通

    《DeepSeek:入门到精通》是由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后团队精心撰写的一份专业文档。该文档篇幅长达104页,文档的核心内容围绕DeepSeek的技术
    的头像 发表于 02-14 09:49 538次阅读
    清华大学发布:DeepSeek<b class='flag-5'>从</b><b class='flag-5'>入门</b>到精通

    DeepSeek:入门到精通

    DeepSeek:入门到精通
    发表于 02-08 18:00 47次下载

    适用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据库

    适用于 MySQL 和 MariaDB 的 Python 连接器 Python Connector for MySQL 是一种可靠的连接解决方案,用于 Python 应用程序访问 M
    的头像 发表于 01-17 12:18 150次阅读
    适用于MySQL和MariaDB的<b class='flag-5'>Python</b>连接器:可靠的MySQL数据连接器和数据库

    入门设计读取数据表开始

    说明文档,它是每个器件的灵魂所在,提供了关于该器件的所有关键信息。通过仔细阅读数据表,工程师可以了解到器件的工作原理、性能参数、电气特性、机械尺寸以及应用示例等重要内容。这些信息将帮助我们更好地理解器件的特性和功能,
    的头像 发表于 12-23 10:40 220次阅读
    <b class='flag-5'>入门</b>设计<b class='flag-5'>从</b>读取数据表<b class='flag-5'>开始</b>

    Python代理技术详解:入门到进阶

    Python代理技术是一种在网络编程中广泛使用的技术,它允许通过代理服务器发送和接收网络请求。
    的头像 发表于 11-12 07:06 325次阅读

    TCSH shell 编程入门

    ICer从业人员最先需要掌握的语言,就是linux shell语言。TCSH是ICer使用最多的Shell语言,可以说ICer入门语言TCSH开始
    发表于 11-01 10:45 0次下载

    使用TMS320C6416处理器:Turbo处理器(TCP)

    电子发烧友网站提供《使用TMS320C6416处理器:Turbo处理器(TCP).pdf》资料免费下载
    发表于 10-23 10:16 0次下载
    使用TMS320C6416<b class='flag-5'>协</b>处理器:Turbo<b class='flag-5'>协</b>处理器(TCP)

    怎么零基础入门先楫

    先楫适合小白学习吗,只有一点STM32基础,网上的资料,好像入门的不多,学习群也不知道在哪里有,买了一块HPM6E00EVK,现在只能看,无从下手,代码架构好像也看不太明白,跟HAL库差别很大,IDE好像也视频资料不多,难道真的要从开始就放弃了吗 
    发表于 10-21 13:18

    使用TMS320C6416处理器:Viterbi处理器(VCP)

    电子发烧友网站提供《使用TMS320C6416处理器:Viterbi处理器(VCP).pdf》资料免费下载
    发表于 10-21 09:36 0次下载
    使用TMS320C6416<b class='flag-5'>协</b>处理器:Viterbi<b class='flag-5'>协</b>处理器(VCP)

    新书推荐 | TSMaster开发入门到精通

    书名:TSMaster开发入门到精通书号:9787302667193作者:杨金升刘矗刘功申定价:99.80元《CANoe开发入门到精通》作者又一力作!本书旨在帮助广大汽车工业领域的
    的头像 发表于 08-30 12:37 687次阅读
    新书推荐 | TSMaster开发<b class='flag-5'>从</b><b class='flag-5'>入门</b>到精通

    重磅!翘首以盼的《TSMaster开发入门到精通》正式出版!

    使用TSMaster软件,大家翘首以盼的《TSMaster开发入门到精通》书籍于8月正式出版发售!《TSMaster开发入门到精通》由杨金升老师牵头,同星智能研发和应用支持团
    的头像 发表于 08-10 08:21 591次阅读
    重磅!翘首以盼的《TSMaster开发<b class='flag-5'>从</b><b class='flag-5'>入门</b>到精通》正式出版!

    Python在AI中的应用实例

    Python在人工智能(AI)领域的应用极为广泛且深入,基础的数据处理、模型训练到高级的应用部署,Python都扮演着至关重要的角色。以下将详细探讨Python在AI中的几个关键应用
    的头像 发表于 07-19 17:16 1496次阅读

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些用 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的方法来实现
    的头像 发表于 07-18 14:53 493次阅读

    PGX-MINI 4K 入门哪里开始

    20PIN 扩展 IO、数码管、按键、led 灯等硬件资源,为用户提供基本的开发环境。 上个月打卡应该是有这开发板了,请问入门如里开始
    发表于 04-14 07:02

    [RK3588入门到精通]系列内容专栏目录及介绍

    [RK3588入门到精通] 专栏目录及介绍
    的头像 发表于 04-10 10:40 871次阅读
    [RK3588<b class='flag-5'>从</b><b class='flag-5'>入门</b>到精通]系列内容专栏目录及介绍