当前位置: 首页 > news >正文

阿里云对象存储做静态网站电子商务网络平台建设

阿里云对象存储做静态网站,电子商务网络平台建设,wordpress5.0.2图集怎么发布,汕头住房与城乡建设网站结论 凡是实现了__iter__() 方法的类都称之为可迭代对象#xff0c;但 __iter__() 方法的返回值只能是迭代器和生成器for 循环的本质是先调用 __iter__() 方法#xff0c;然后不断调用返回值的 __next__() 方法#xff0c;直至报出异常 StopIteration#xff0c;可迭代对象…结论 凡是实现了__iter__() 方法的类都称之为可迭代对象但 __iter__() 方法的返回值只能是迭代器和生成器for 循环的本质是先调用 __iter__() 方法然后不断调用返回值的 __next__() 方法直至报出异常 StopIteration可迭代对象的返回值一定是迭代器或生成器而迭代器和生成器内部都具有 __next__() 方法所以可迭代对象一定可以用于 for 循环凡是实现了 __iter__() 方法和 __next__() 方法的类都称之为迭代器凡是包含 yield 的函数都会自动生成一个同名的包含 __iter__() 方法和 __next__() 方法的类这个类称之为生成器所以生成器是一个特殊的迭代器在类中只要实现了 __getitem__()则会自动生成 __iter__() 方法所以凡是实现了__getitem__()方法的类也都称之为可迭代对象可迭代对象不一定是迭代器但迭代器一定是可迭代对象 案例 1 凡是实现了__iter__() 方法的类都称之为可迭代对象凡是实现了 __iter__() 方法和 __next__() 方法的类都称之为迭代器 from collections.abc import Iterator# 定义一个可迭代对象同时也是迭代器 class MyClass1():def __init__(self, max_num):self.current 0self.max_num max_numdef __iter__(self): # 实现了__iter__()方法并不报错的类就是可迭代对象对返回值类型有要求否则报错return self # 并不要求必须返回self只要是迭代器、生成器就可以self本身是迭代器def __next__(self): # 同时实现了__iter__()和__next__()的类就是迭代器if self.current self.max_num:val self.currentself.current 1return valelse:raise StopIteration # __next__()方法中要求有StopIteration, 否则无法终止但不是必须for value in MyClass1(3): # for循环的本质是先调用__iter__()然后不断调用返回值的__next__()直至报出异常StopIterationprint(value) print(iter(MyClass1(3))) # iter(Myclass1(3))等效于Myclass1(3).__iter__() print(isinstance(MyClass1(3), Iterator))0 1 2 # 可用for循环, 只要是可迭代对象都可以用for循环 __main__.Myclass1 object at 0x79a05a1c7fd0 # 说明是可迭代对象, 如果不是可迭代对象会报错 True # 说明是迭代器 # 定义一个可迭代对象同时也是迭代器 class MyClass2():def __init__(self, max_num):self.current 0self.max_num max_numdef __iter__(self): # 实现了__iter__()方法并不报错的类就是可迭代对象对返回值类型有要求否则报错return iter([3, 4, 5]) # 并不要求必须返回self只要是迭代器、生成器就可以iter(List)中包含__next__()方法def __next__(self): # 同时实现了__iter__()和__next__()的类就是迭代器if self.current self.max_num:val self.currentself.current 1return valelse:raise StopIteration # __next__()方法中要求有StopIteration, 否则无法终止但不是必须for value in MyClass2(3): # for循环的本质是先调用__iter__()然后不断调用返回值的__next__()直至报出异常StopIterationprint(value) object2 MyClass2(3) for _ in range(3): print(next(object2)) # next(object2)等效于object2.__next__() print(iter(MyClass2(3))) # iter(Myclass2(3))等效于Myclass2(3).__iter()__ print(isinstance(MyClass2(3), Iterator))3 4 5 # 可用for循环, 但for循环与自身的__next__()无关, 调用的是返回值的__next__() 0 1 2 # 自身的__next__()方法可以直接被调用, 超出取值范围会报出异常StopIteration list_iterator object at 0x7a2e7013bd90 # 说明是可迭代对象, 如果不是可迭代对象会报错 True # 说明是迭代器案例 2 凡是实现了__iter__() 方法的类都称之为可迭代对象 from collections.abc import Iterator# 定义一个可迭代对象但不是迭代器 class MyClass3():def __iter__(self): # 实现了__iter__()方法并不报错的类就是可迭代对象对返回值类型有要求否则报错return iter([0, 1, 2]) # 并不要求必须返回self只要是迭代器、生成器就可以iter(List)中包含__next__()方法for value in MyClass3(): # for循环的本质是先调用__iter__()然后不断调用返回值的__next__()直至报出异常StopIterationprint(value) print(iter(MyClass3())) # iter(Myclass3())等效于Myclass3().__iter()__ print(isinstance(MyClass3(), Iterator)) # 类中没有实现自己的__next__()所以不是迭代器但能用在for循环的原因是调用了List的__next__()0 1 2 # 可用for循环, 只要是可迭代对象都可以用for循环 list_iterator object at 0x7a2e7013bd90 # 说明是可迭代对象, 如果不是可迭代对象会报错 False # 说明不是迭代器, 没有实现自己的__next__()方法案例 3 在类中只要实现了 __getitem__()则会自动生成 __iter__() 方法所以凡是实现了__getitem__()方法的类也都称之为可迭代对象 from collections.abc import Iterator# 定义一个可迭代对象但不是迭代器 class MyClass4():def __init__(self):self.data [0, 1, 2]def __getitem__(self, index): # __getitem__()方法会自动实现__iter__()方法但不会自动实现__next__()方法return self.data[index]for value in MyClass4(): # for循环的本质是先调用__iter__()然后不断调用返回值的__next__()直至报出异常StopIterationprint(value) print(iter(MyClass4())) # iter(Myclass4())等效于Myclass4().__iter()__ print(isinstance(MyClass4(), Iterator)) # 类中没有实现自己的__next__()所以不是迭代器但能用在for循环的原因是调用了List的__next__()0 1 2 # 可用for循环, 调用的是返回值的__next__(), 返回值是iter(self.data) iterator object at 0x7172911bbd30 # 说明是可迭代对象, 如果不是可迭代对象会报错 False # 说明不是迭代器, 没有实现自己的__next__()方法案例 4 凡是包含 yield 的函数都会自动生成一个同名的包含 __iter__() 方法和 __next__() 方法的类这个类称之为生成器所以生成器是一个特殊的迭代器 from collections.abc import Iterator# 定义一个可迭代对象但不是迭代器 class MyClass5():def __init__(self):self.data [0, 1, 2]def __iter__(self): # 实现了__iter__()方法并不报错的类就是可迭代对象对返回值类型有要求否则报错for i in range(len(self.data)): # 并不要求必须返回self只要是迭代器、生成器就可以包含yield返回生成器yield self.data[i] # 不需要加异常StopIterationfor value in MyClass5(): # for循环的本质是先调用__iter__()然后不断调用返回值的__next__()直至报出异常StopIterationprint(value) print(iter(MyClass5())) # iter(Myclass5())等效于Myclass5().__iter()__ print(isinstance(MyClass5(), Iterator)) # 没有自己的__next__()所以不是迭代器 print(isinstance(iter(MyClass5()), Iterator)) # __iter__()返回值是一个生成器生成器内部会自动实现自己的__iter__()方法和__next__()方法详见下面fib()0 1 2 # 可用for循环, 只要是可迭代对象都可以用for循环 generator object MyClass5.__iter__ at 0x7a2e701e2350 # __iter__()方法返回的是生成器, 说明是可迭代对象, 如果不是可迭代对象会报错 False # 说明不是迭代器, 但可以用for循环的原因是, 返回的生成器内部自动实现自己的__iter__()方法和__next__()方法 True # 包含yield语句的__iter__(self)自动生成一个生成器, 生成器也是一个类, 注意这个类是MyClass5内部的一个类 # 定义一个可迭代对象同时也是迭代器 def fib(end1000): # 自动构建一个名为fid的类并自动构建__iter__()方法和__next__()方法使之成为可迭代对象和迭代器prev, curr 0, 1while curr end:yield curr # 不需要加异常StopIterationprev, currcurr, currprevfor value in fib(): # for循环的本质是先调用__iter__()然后不断调用返回值的__next__()直至报出异常StopIterationprint(value) object_fib fib() for _ in range(3): # 能用for循环因为生成器自动构建__iter__()方法和__next__()print(next(object_fib)) # next(object_fib)等效于object_fib.__next__() print(iter(fib())) # iter(fib())等效于fib().__iter()__ print(isinstance(fib(), Iterator)) # 是迭代器原因是生成器自动构建__iter__()方法和__next__()1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 # 说明生成器会自动构建__iter__()方法和__next__()方法 1 1 2 # 说明生成器会自动构建__next__()方法 generator object fib at 0x7a2e701e2350 # __iter__()方法返回的是生成器, 说明是可迭代对象, 如果不是可迭代对象会报错 True # 是迭代器, 生成器是一个特殊的迭代器
http://www.hkea.cn/news/14455965/

相关文章:

  • 如何做最强的社交网站西安市做网站的
  • 恒一信息深圳网站建设公司2临淄网站建设公司
  • qq官方网站产品开发流程8个步骤案例
  • 网站开发制作合同注册公司注册企业注册
  • 建站备案wordpress建一个网站
  • html免费网站模板带后台科技无国界
  • 做付费网站好网站建设自查情况报告
  • 南宁网站建设哪家专业建设工程法律法规
  • 陕西省住房和城乡建设厅网站网站建设与维护课程
  • 网站实现中英文wordpress指定标签不同样式
  • 首页网站关键词优化教程简单的html网页设计
  • 莱州房产网房产信息谷歌怎么做网站优化
  • 免费的网站模版下载wordpress首页描述
  • 太原本地网站建立公司网站流程
  • 做外贸要开通哪个网站网站备案 取消
  • 做胃肠医院网站2022企业所得税优惠政策
  • 建设银行手机官方网站下载安装公司装修合同
  • 创建网站时可使用的数据库有关键词优化快速排名
  • 网站发布的步骤做销售网站那家好
  • 搜不到自己的网站免费的网站模板哪里有
  • 上海网站推广系统哪个设计网站赚钱
  • 安徽省网站建设公司建立全国统一的突发事件信息系统
  • 制作网站多少钱一个万网的域名怎么交易
  • 免费发布广告信息网上海搜索排名优化
  • 利用小米路由器mini做网站珠海网站建设哪家公司好
  • 同域名网站改版需要把之前网站里的文章都拷贝过来吗?做推广软件
  • dw做网站链接网站报价表
  • 网络营销比较好的企业山西seo谷歌关键词优化工具
  • 公司做网站百度可以搜到吗网站权重能带来什么作用
  • 网站多语言界面建设方案哪里可以免费发布招聘信息