Python之迭代器
1.如果有重载__iter__方法则表示类是一个Iterable
2.如果有重载__next__方法则表示类是一个Iterator
3.可以使用isinstance(obj, Iterable)和isinstance(obj, Iterator)来判断一个实例是否是Iterable和Iterator
1 from collections import Iterable 2 from collections import Iterator 3 import time 4 5 6 class MyIterable: 7 """ 8 类的注释 9 """ 10 def __init__(self): 11 self.names = list() 12 self.__ind = 0 13 14 def add(self, name): 15 self.names.append(name) 16 17 def __iter__(self): 18 # return MyIterator(self) 19 return self 20 21 def __next__(self): 22 print('return from MyIterable::__next__') 23 if len(self.names) > self.__ind: 24 ret = self.names[self.__ind] 25 self.__ind += 1 26 return ret 27 else: 28 raise StopIteration 29 30 31 # class MyIterator(): 32 # """ 33 # 类的注释 34 # """ 35 # def __init__(self, iterable): 36 # self.iterable = iterable 37 # self.__ind = 0 38 # 39 # # def __iter__(self): 40 # # pass 41 # 42 # def __next__(self): 43 # print('return from MyIterator::__next__') 44 # if len(self.iterable.names) > self.__ind: 45 # ret = self.iterable.names[self.__ind] 46 # self.__ind += 1 47 # return ret 48 # else: 49 # raise StopIteration 50 51 52 def main(): 53 iterable = MyIterable() 54 iterable.add('python') 55 iterable.add('cpp') 56 iterable.add('csharp') 57 58 # iterator = MyIterator() 59 60 # print(isinstance(iterable, Iterable)) 61 # print(isinstance(iterator, Iterator)) 62 63 # print(next(iterator)) 64 65 for name in iterable: 66 print(name) 67 time.sleep(1) 68 69 70 if __name__ == '__main__': 71 main()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗