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

    文章

    405

    浏览量

    35445
  • 函数
    +关注

    关注

    3

    文章

    4130

    浏览量

    61553
  • python
    +关注

    关注

    53

    文章

    4703

    浏览量

    83704
收藏 人收藏

    评论

    相关推荐

    PGX-MINI 4K 入门哪里开始

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

    python shell怎么用

    开始菜单中的Python选项,选择"Python (command line)"。在启动时,在Shell的提示符(>>>)后面输入代码,然后按回车键执行并得到
    的头像 发表于 11-29 14:36 488次阅读

    Python yield的作用

    要理解yield的作用,你必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。 迭代器 当您创建一个列表时,你可以逐个读取它的项。逐项读取其项称为迭代: mylist是一个可迭代的对象。当你
    的头像 发表于 11-02 11:21 281次阅读
    <b class='flag-5'>Python</b> <b class='flag-5'>yield</b>的作用

    如何学会 Python yield 关键词

    要理解yield的作用,你必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。 1.迭代器 当您创建一个列表时,你可以逐个读取它的项。逐项读取其项称为迭代: mylist是一个可迭代的对象
    的头像 发表于 10-31 11:06 200次阅读
    如何学会 <b class='flag-5'>Python</b> <b class='flag-5'>yield</b> 关键词

    Python SDK包的使用

    Shodan Web端非常好用,但如果我们有从 Python 搜索的需求怎么办? 没关系,Shodan 官方也提供了 Python SDK 包,下面就来讲讲这个 SDK 包的使用。 1.准备 开始
    的头像 发表于 10-30 15:51 529次阅读
    <b class='flag-5'>Python</b> SDK包的使用

    如何使用Python和PinPong库控制Arduino

    与传感器和其他物理设备集成的应用程序。如果您已经掌握了Python的基础知识,那么您可以通过使用Python来控制Arduino来入门。本文目的主要是向您展示如何使用PinPong库通过Pyt
    的头像 发表于 10-13 10:59 576次阅读
    如何使用<b class='flag-5'>Python</b>和PinPong库控制Arduino

    不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)

    先了解生物神经元模型。 >>>点击查看下载资料 2.Python编程:入门到实践 如何学习编写第一个程序,每个程序员都有不同的故事。我还是个孩子时就开始学习
    发表于 09-13 16:41

    python为什么适合人工智能

    Python是一种高级编程语言,设计时为了容易学习和使用。这意味着开发人员能够轻松入门,并能快速实现解决方案。这使Python成为了一种非常流行的编程语言。它的简单和易于学习的本质使得Pyth
    的头像 发表于 08-13 10:34 1234次阅读

    千锋Python教程:171 线程、_第3节

    编程代码python
    充八万
    发布于 :2023年08月06日 07:27:20

    高级Python编程知识-24.yield from - 第2节高级Python编程知识-24.yield f

    编程python
    充八万
    发布于 :2023年07月30日 08:17:29

    高级Python编程知识-24.yield from - 第1节高级Python编程知识-24.yield f

    编程python
    充八万
    发布于 :2023年07月30日 08:16:39

    Python实现OpenCV的安装与使用

      本文实例讲述了 Python 实现 OpenCV 的安装与使用。分享给大家供 大家参考,具体如下:  由于下一步要开始研究下深度学习,而深度学习领域很多的算法和应 用都是用 Python 来实现
    发表于 07-20 11:46 7次下载

    基于python代码的人脸识别实例

    基于python代码的一个人脸识别的实例,完整的实例,本人在pycharm中实测通过,是一个很基础的入门级的人脸检测和识别。
    发表于 07-18 11:11 13次下载