python中可迭代对象,迭代器,生成器,协程
可迭代对象
创建对象的类中有__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中可迭代对象,迭代器,生成器,协程相关推荐
- python多线程好还是多协程好_深入浅析python中的多进程、多线程、协程
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- 【Python】【容器 | 迭代对象 | 迭代器 | 生成器 | 生成器表达式 | 协程 | 期物 | 任务】...
Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyn ...
- python中迭代器和可迭代对象的区别_Python 可迭代对象迭代器生成器的区别
生成器是一种特殊的迭代器,生成器自动实现了"迭代器协议"(即__iter__和next方法),不需要再手动实现两方法. 首先从字面意思来解释Iterable和Iterator的区别 ...
- python可迭代对象 迭代器生成器_Python可迭代对象、迭代器和生成器
8.1 可迭代对象(Iterable) 大部分对象都是可迭代,只要实现了__iter__方法的对象就是可迭代的. __iter__方法会返回迭代器(iterator)本身,例如: >>&g ...
- Python要想学得好,【容器/可迭代对象/迭代器/生成器】少不了,稳扎稳打学Python!
在刚开始学Python的时候,是不是经常会听到大佬们在讲容器.可迭代对象.迭代器.生成器.列表/集合/字典推导式等等众多概念,其实这不是大佬们没事就搁那扯专业术语来装B,而是这些东西都得要明白的,光知 ...
- python的装饰器、迭代器、yield_python装饰器,迭代器,生成器,协程
python装饰器[1] 首先先明白以下两点 #嵌套函数 defout1():definner1():print(1234) inner1()#当没有加入inner时out()不会打印输出1234,当 ...
- python中不可迭代对象有哪些_python可迭代对象
本身实现了迭代方法的对象称之为可迭代对象,可迭代对象特点: 支持每次返回自己所包含的一个成员的对象: 对象实现了 __iter__ 方法: 所有数据结构都是可迭代对象: for 循环要求对象必须是一个 ...
- Python中的装饰器,迭代器,生成器
1. 装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1和2的 ...
- python中可迭代对象拆包时、怎么赋值给占位符_python3-数据结构和算法 » 1.2 解压可迭代对象赋值给多个变量...
1.2 解压可迭代对象赋值给多个变量 问题 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才能从这个可迭代对象中解压出 N 个元素出来? 解决方案 Pyth ...
最新文章
- BZOJ 4584 [Apio2016]赛艇
- Python 一种接触就容易爱上的语言二
- ubuntu18.10 cosmic更换阿里云的源
- 用Python一次性把论文作图与数据处理全部搞定!
- 力扣55. 跳跃游戏(JavaScript)
- caffe提取每一层中的特征,在matlab或python查看
- 关于导入swf时安全域与应用域的问题
- redis实现分布式锁代码片段
- 微信小程序 获取cookie 以及设置 cookie
- 第5讲:VUE3工程中实现页面加载中效果和页面切换动画效果。
- 代码行数统计工具loc与iloc
- MovieLens 数据集补充版爬虫代码解析
- 微信小程序 讲座预约签到系统java python php
- 【蓝桥杯单片机笔记6】PWM脉宽调制信号
- 服务器宕机是什么意思?服务器宕机原因及解决方法
- matlab连通区域统计,MATLAB bwlabel函数 统计连通区域
- Hive报错Error during job, obtaining debugging information...
- Flutter从相册选择图片并显示出来,上传到服务器
- ASEMI肖特基二极管MBR10100FCT关键参数及选型要点
- 小米路由器安装花生壳实现外网映射
热门文章
- H5小游戏 - canvas涂鸦板
- MCMS 基于SpringBoot 2架构
- CSS鼠标悬停隐藏展开简介特效
- mysql 屏蔽索引_mysql强制索引和禁止某个索引
- 如何判断字符串已经被url编码_如何判断回文数?不要再将整数转为字符串来解决这个问题了...
- bartlett方差齐性检验_方差齐性检验
- Django使用mysql连接池_Django db使用MySQL连接池
- oracle 不能导入sql语句,oracle数据库导入.dmp脚本的sql 语句
- md函数MySQL_MySQL的常用SQL语句.md
- linux判断redis是否启动成功_087、Redis