mysql迭代器_迭代器 - 御姐玫瑰 - 博客园
一、协程
1、协程是Python语言独有的一种多任务方式。
2、使用gevent模块实现协程。
3、协程的实现过程(步骤)
迭代器
生成器
yield
greenlet
gevent
二、迭代器
1、迭代的定义: 在原有的基础之上添加新的功能。
2、迭代对象的定义:即一个对象中有包含了【__iter__】的方法。
3、迭代器的定义:
即:一个对象中既包含了【__iter__】方法,又包含了【__next__】方法
通过它可以用来节省内存空间,并且能够知道将来生成数据的方式。
4、判断一个数据类型是否可以迭代:
说明:
a、通过【isinstance】语句用于判断一个对象是否由一个类创建的。
返回一个布尔值:是则返回True,不是则返回False。
语法:
isinstance(对象, 类)
# True:属于
# False:不属于
b、判断这个数据类型对象是否是属于【Iterable】类的子类。
语法:
from collections import Iterable
isinstance(迭代对象, Iterable)
# True:属于
# False:不属于
c、示例
from collections importIterable#1. 判断列表
list_ret = isinstance([1, 2, 3], Iterable)print(f"列表:{list_ret}")#2. 判断元组
list_ret = isinstance((1, 2, 3), Iterable)print(f"元组:{list_ret}")#3. 判断字符串
list_ret = isinstance("huangwei", Iterable)print(f"字符串:{list_ret}")#4. 判断数字
list_ret = isinstance(100, Iterable)print(f"数字:{list_ret}")
View Code
运行结果:
列表:True
元组:True
字符串:True
数字:False
4、可迭代对象
a、成为可迭代对象的条件:类中必须要有【__iter__】方法。
要求:自定义一个可迭代对象
from collections importIterableclassDemo(object):def __init__(self):
self.names=list()defadd(self, name):
self.names.append(name)
obj=Demo()
obj.add(100)
obj.add(200)
obj.add(300)print(f"判断obj对象是否为可迭代对象:{isinstance(classmate, Iterable)}")
View Code
运行结果:判断obj对象是否为可迭代对象:False
可迭代对象示例代码
from collections importIterableclassDemo(object):def __init__(self):
self.names=list()defadd(self, name):
self.names.append(name)def __iter__(self):passobj=Demo()
obj.add(100)
obj.add(200)
obj.add(300)print(f"判断obj对象是否为可迭代对象:{isinstance(classmate, Iterable)}")
View Code
运行结果:判断obj对象是否为可迭代对象:True
5、使用for循环的条件
a、判断一个对象可以使用for循环的条件
b、for循环的执行原理:
1、被循环的对象是否可以迭代,即:类中必须有【__iter__】方法
2、在【__iter__】方法中必须要返回一个引用:迭代器。
即:该迭代器中必须具有【__iter__方法】和【__next__方法】。
3、迭代器中必须包含【__iter__】方法和【__next__】方法。
4、通过这个迭代器的引用,for循环将调用该引用中的【__next__】的返回值。
即:使用【for 变量 in 可迭代对象】语句时,
打印变量的值得到的是迭代器中【__next__】方法的返回值。
c 、演示:
示例1:创建一个可以被for循环遍历的类。
classDemo(object):def __init__(self):
self.names=list()defadd(self, name):
self.names.append(name)def __iter__(self):return ClassIterator() #返回一个迭代器
classClassIterator(object):def __iter__(self):pass
def __next__(self):passobj=Demo()#通过iter函数可查看obj对象的__iter__方法的返回值。
print(iter(obj))
View Code
运行结果:
示例2:查看一个对象是否为迭代器,并通过【next】方法取到可迭代对象中的值。
运行结果:
from collections importIteratorclassDemo(object):def __init__(self):
self.names=list()defadd(self, name):
self.names.append(name)def __iter__(self):returnClassIterator()classClassIterator(object):def __iter__(self):pass
def __next__(self):return 100obj=Demo()
demo_iterator=iter(obj)#1. 判断obj对象是否为可迭代对象
print(f"obj对象是否为可迭代对象:{isinstance(demo_iterator, Iterable)}")#2. 判断demo_iterator对象是否为迭代器
print(f"demo_iterator对象是否为迭代器:{isinstance(demo_iterator, Iterator)}")#3. 通过next方法取值
print(next(demo_iterator))
View Code
mysql迭代器_迭代器 - 御姐玫瑰 - 博客园相关推荐
- mysql链表_MySql链表语句--博客园老牛大讲堂
为什么链表?--博客园老牛大讲堂 因为表与表之间有关系,而且查询时需要两张表的某些数据. 链表的前提是:表与表之间必须设置主外键吗? 不是的,其实表与表之间不需要设置主外键关系,用数据库语句就可以实现 ...
- java单纯形法_单纯形法 - fjzzq2002 - 博客园
看了集训队答辩,感觉要学习的有杜教筛高级版.线性规划.FFT.仙人掌.高级版线段树 不出意外的话一个月内博客内都不会有别的东西了QAQ 首先是喜闻乐见的单纯形法解线性规划. 今年(2016年)和线性规 ...
- java充值_充值 - javalzy - 博客园
http://blog.csdn.net/xiaoxiangzhu660810/article/details/17434907 http://blog.csdn.net/fangzy0112/art ...
- mysql可以做决策树吗_决策树 - stream886 - 博客园
参考资料 决策树 决策树是一种运用概率与图论中的树对决策中的不同方案进行比较,从而获得最优方案的风险型决策方法. 决策树学习三步骤: 特征选择 决策树的生成 决策树的剪枝 常用的决策树算法有ID3,C ...
- mysql sign_mysql - 随笔分类 - signheart - 博客园
随笔分类 - mysql 摘要:有一个项目需要存储ios的表情(emoji表情)这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字节的字符.在MySQL ...
- python编写存储过程_存储过程 - msjaxuexi - 博客园
什么是存储过程 存储过程是一组任意的sql语句集合,存储在mysql中,调用存储过程时将会执行其包含的所有sql语句;与python中函数类似; 为什么使用存储过程 回顾触发器与视图都是为了简化应用程 ...
- mysql 圆周率_mysql - π=3.1415926 - 博客园
数据库 Database Management System 简称DBMS 包括三大部分构成: 1 数据库文件集合, 主要是一系列的数据文件,作用是存储数据 2 数据库服务端, 主要负责对数据文件以及 ...
- mysql declare浮点数_MySQL - Belong_yucl - 博客园
1.描述表得结构 desc table_name; desc table_name; 2.删除表中得数据 delete from table_name where [约束条件] delete from ...
- java bean 单例模式_单例模式 - Beans_bag - 博客园
1.单例模式的简介 定义 保证每个类仅有一个实例,并给外部提供一个访问它的全局访问点. 思路 如果一个类能够被创建多个实例,那么,这个类的构造方法肯定是公开的,外部通过此类的构造方法可以创建多个类的实 ...
最新文章
- 深度学习之核心要素:输入输出、目标函数、前向传播、后向传播、学习率、梯度下降
- oracle procedures批量删除带索引条件数据很慢_见微知著,数据库应用设计优化浅谈...
- Redis相比memcached
- XHTML 相对路径与绝对路径
- java实现愤怒的小鸟游戏
- 高阶篇:8.1)开模前评审及提交资料;
- js 给动态li添加动态点击事件
- 谷歌Colab GPU达到使用量限额解决办法
- SqlServer2012 File Table文件表
- java取linux本地xml,java-使用apache poi读取.xlsx文件会在Linux机器...
- linux下安装指定版本的nodejs(升级到指定版本)
- 分析Linux内核创建一个新进程的过程
- SecureCRT 7.3软件下载及破解工具+教程
- 国际贸易术语_Incoterm
- hibernate HQL 使用from (select ……)子查询的方法
- 计算机综合症怎么治,小窍门防治电脑综合征
- ATTCK靶场系列(七)
- 关于一体机外卖单不打印外卖单号FAQ(适用正餐6.0.09,轻餐4.0.6.1,轻餐4.0.6.2)
- JavaScriptMVC之View
- 武夷岩茶PK铁观音(南北乌龙之我见--清风云雨)
热门文章
- CentOS如何增加虚拟内存
- Codeforces Round #617 (Div. 3)题解全集
- 国内HR就业前景如何?你可要知道
- gta5打开计算机丢失文件夹,win10怎么找到GTA5存档-win10打开gta5存档文件夹的方法 - 河东软件园...
- 【紧急警报】微信绑定手机号疑似存在安全漏洞,黑客可通过微信号获取用户手机号!
- 纯css3炫酷科技感菜单
- COALESCE函数和NVL函数
- ImageView 使用详解
- 笔记本开启热点后,笔记本网页无法打开,QQ可以使用,
- python制作恶搞_搞几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码!...