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

阿里云对象存储做静态网站wordpress alt 空

阿里云对象存储做静态网站,wordpress alt 空,做网站推广公司,网站横幅广告怎么做结论 凡是实现了__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.dnsts.com.cn/news/74729.html

相关文章:

  • 专门做衣服特卖的网站有哪些营销型 展示类网站
  • 中山网站开发赤峰做网站开发
  • 做一个企业网站设计阿里巴巴国际站官网
  • 公司网站建设及安全解决方案站长工具站长
  • 网站系统分析的步骤有哪些wordpress 修改发帖时间
  • 网站建设工作室小俊哥镇江网站营销推广
  • 织梦网站怎样做子域名怎么更改网站栏目id
  • 网站建设方案和报价表一个网站的作用是什么
  • 安徽省建设工程安全协会网站free theme wordpress
  • 成都网站建设公司是什么意思网站建设的工作描述
  • 西部数码做跳转网站万网主机 wordpress
  • 网站上传权限300m空间够用吗 wordpress
  • 广州技术支持 奇亿网站建设更新php wordpress
  • 上海英文网站制作电商平台要投资多少钱
  • 衡水做网站开发的网上怎么样挣钱
  • 查询网站备案时间查询做搜狗手机网站长尾
  • 摄影的网站设计特点石家庄搜索引擎优化
  • 上海做网站好的公司有哪些广西建设网个人查询
  • 山东建设部网站dtcms网站开发
  • 网站怎么做移动图片不显示不出来规划展厅设计
  • 网站平台建设目标大连建设工程
  • 怎样优化网站案例网站制作报价维持地建网络
  • 做网站推广怎么定位客户php搭建网站软件
  • 网站制作哪些百度搜索引擎使用技巧
  • 如何建立网址的步骤成都官网优化多少钱
  • 餐饮网站建设公司淘宝产品页面设计
  • 天津智能网站建设多少钱免费海报模板网站
  • wordpress 多个子站点wordpress禁止访问后台
  • 如何电话推销客户做网站张家口手机台app下载
  • 各种颜色做网站给人的心里暗示网站模板打包