python-迭代器demo
来源:互联网 发布:沈阳浟湙网络怎么样 编辑:程序博客网 时间:2024/06/04 18:01
#迭代器是是一个定义了__iter__()方法的类。__init__,__iter__,__next__,起始和结束都是一对下划线,这些方法不是直接调用的,当使用类或实例的某些语法时,python会自动调用它们。class Fib:def __init__(self,max): #调用Fib(max)会创建该类的一个真实的实例,并以max作为参数调用__init__()方法。__init__()方法以实例变量保存最大值,以便其它方法可以引用。self.max = maxdef __iter__(self): #当有人调用iter(fib),__iter__()就会被调用,for循环会自动调用它,在完成迭代初始化后,__iter__()能返回任何实现了__next__()方法的对象self.a = 0self.b = 1return selfdef __next__(self): #当在迭代器的实例中调用next()方法时,__next__()会自动调用。fib = self.aif fib > self.max:raise StopIteration #当__next__()抛出StopIteration异常,这是给调用者表示迭代用完的信号,和大多数异常不同,这不是错误,是正常情况,仅表示迭代器没有值了。self.a,self.b = self.b,self.a + self.breturn fib#fi=Fib(5)#print (fi)for n in Fib(10000):print(n,end=' ')
#!/usr/bin/python# encoding: utf8class LazyRules:rules_filename = 'plural-rules.txt'def __init__(self):self.pattern_file = open(self.rules_filename,encoding='utf-8') #打开文件模式,但不读取任何内容self.cache = [] #初始化缓存def __iter__(self):self.cache_index = 0return selfdef __next__(self):self.cache__index += 1if len(self.cache) >= self.cache__index:return self.cache[self.cache__index - 1]if self.pattern_file.closed:raise StopIterationline = self.pattern_file.readline()if not line:self.pattern_file.close()raise StopIterationpattern,search,replace = line.split(None,3)funcs = build_match_and_apply_functions(pattern,search,replace)self.cache.append(funcs)return funcs rules = LazyRules()print (rules)
阅读全文
0 0
- python-迭代器demo
- python demo
- Python demo
- Python Demo
- Python Template Demo
- Python lib demo
- CentOS thrift python demo
- python文件读写demo
- Python抓取图片Demo
- python下载文件DEMO
- python-金融数据处理demo
- python selenium使用demo
- python socket通信demo
- python 常用demo
- python function definitioni demo
- dictionary in python demo
- python tuple demo
- python multiple assignment demo
- ChannelOption.SO_KEEPALIVE, true->java socket参数详解:KeepAlive
- win10的bash使用ssh连接远程服务器
- 【Linux】【Debug】一个简单的debug信息输出方法
- 配置Ubuntu·14.04+显卡驱动+cuda7.5+opencv2.4.11+caffe
- 博客小技巧:程序演示效果GIF图录制
- python-迭代器demo
- C#异步TCP服务器完整实现
- OCR检测识别总结
- 单例模式大全
- Linux下 /etc/bashrc 和 用户目录下.bashrc的区别
- Fling(深搜)
- Unity中如何使用Thread
- Rviz教程(三):Markers: Points and Lines (C++)
- Ubuntu下安装C/C++开发环境,Gnome桌面程序开发环境,Java开发环境