可迭代对象

创建对象的类中有__iter__方法。

它就是可迭代对象。

所谓的可迭代对象,就是可以被遍历的对象。

如果希望遍历能够获取到值,需要让这个__iter__方法返回一个迭代器对象

迭代器

创建该对象的类中存在__iter__方法,且存在__next__方法

则该类的实例对象为迭代器对象。

迭代器可以通过next(迭代器)获取返回值,也可通过 迭代器.__next__() 获取返回值

生成器

是一种特穆殊的迭代器

它可迭代,但是没有__iter__  __next__方法

如果类中存在yield,则该类创建的对象是生成器

可通过 next(生成器对象) 获取yield 后面根的值

也可以通过 生成器对象.send(值) 把这个值赋给 yield 左边等号的变量,例如 name = yield username

协程

利用yield可以实现协程的功能

协程是用户态的多线程,不存在纯正多线程的那种抢资源的情况

什么时候启动协程完全由程序员来控制

协程的高级用法通常使用gevent来完成

例子代码

首先安装gevent

pip install gevent

然后在代码中导入

import gevent

当代码中存在耗时操作时,会自动切换gevent对象

1,通过gevent.spawn(执行函数名,参数1,参数2)创建gevent对象

2,通过gevent.joinall(gevent对象的列表)让这些对象运转起来

3,通过导入monkey让耗时操作可以被捕获

monkey.patch_all()

python中可迭代对象,迭代器,生成器,协程相关推荐

  1. python多线程好还是多协程好_深入浅析python中的多进程、多线程、协程

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  2. 【Python】【容器 | 迭代对象 | 迭代器 | 生成器 | 生成器表达式 | 协程 | 期物 | 任务】...

    Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyn ...

  3. python中迭代器和可迭代对象的区别_Python 可迭代对象迭代器生成器的区别

    生成器是一种特殊的迭代器,生成器自动实现了"迭代器协议"(即__iter__和next方法),不需要再手动实现两方法. 首先从字面意思来解释Iterable和Iterator的区别 ...

  4. python可迭代对象 迭代器生成器_Python可迭代对象、迭代器和生成器

    8.1 可迭代对象(Iterable) 大部分对象都是可迭代,只要实现了__iter__方法的对象就是可迭代的. __iter__方法会返回迭代器(iterator)本身,例如: >>&g ...

  5. Python要想学得好,【容器/可迭代对象/迭代器/生成器】少不了,稳扎稳打学Python!

    在刚开始学Python的时候,是不是经常会听到大佬们在讲容器.可迭代对象.迭代器.生成器.列表/集合/字典推导式等等众多概念,其实这不是大佬们没事就搁那扯专业术语来装B,而是这些东西都得要明白的,光知 ...

  6. python的装饰器、迭代器、yield_python装饰器,迭代器,生成器,协程

    python装饰器[1] 首先先明白以下两点 #嵌套函数 defout1():definner1():print(1234) inner1()#当没有加入inner时out()不会打印输出1234,当 ...

  7. python中不可迭代对象有哪些_python可迭代对象

    本身实现了迭代方法的对象称之为可迭代对象,可迭代对象特点: 支持每次返回自己所包含的一个成员的对象: 对象实现了 __iter__ 方法: 所有数据结构都是可迭代对象: for 循环要求对象必须是一个 ...

  8. Python中的装饰器,迭代器,生成器

    1. 装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1和2的 ...

  9. python中可迭代对象拆包时、怎么赋值给占位符_python3-数据结构和算法 » 1.2 解压可迭代对象赋值给多个变量...

    1.2 解压可迭代对象赋值给多个变量 问题 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才能从这个可迭代对象中解压出 N 个元素出来? 解决方案 Pyth ...

最新文章

  1. BZOJ 4584 [Apio2016]赛艇
  2. Python 一种接触就容易爱上的语言二
  3. ubuntu18.10 cosmic更换阿里云的源
  4. 用Python一次性把论文作图与数据处理全部搞定!
  5. 力扣55. 跳跃游戏(JavaScript)
  6. caffe提取每一层中的特征,在matlab或python查看
  7. 关于导入swf时安全域与应用域的问题
  8. redis实现分布式锁代码片段
  9. 微信小程序 获取cookie 以及设置 cookie
  10. 第5讲:VUE3工程中实现页面加载中效果和页面切换动画效果。
  11. 代码行数统计工具loc与iloc
  12. MovieLens 数据集补充版爬虫代码解析
  13. 微信小程序 讲座预约签到系统java python php
  14. 【蓝桥杯单片机笔记6】PWM脉宽调制信号
  15. 服务器宕机是什么意思?服务器宕机原因及解决方法
  16. matlab连通区域统计,MATLAB bwlabel函数 统计连通区域
  17. Hive报错Error during job, obtaining debugging information...
  18. Flutter从相册选择图片并显示出来,上传到服务器
  19. ASEMI肖特基二极管MBR10100FCT关键参数及选型要点
  20. 小米路由器安装花生壳实现外网映射

热门文章

  1. H5小游戏 - canvas涂鸦板
  2. MCMS 基于SpringBoot 2架构
  3. CSS鼠标悬停隐藏展开简介特效
  4. mysql 屏蔽索引_mysql强制索引和禁止某个索引
  5. 如何判断字符串已经被url编码_如何判断回文数?不要再将整数转为字符串来解决这个问题了...
  6. bartlett方差齐性检验_方差齐性检验
  7. Django使用mysql连接池_Django db使用MySQL连接池
  8. oracle 不能导入sql语句,oracle数据库导入.dmp脚本的sql 语句
  9. md函数MySQL_MySQL的常用SQL语句.md
  10. linux判断redis是否启动成功_087、Redis