python基础----迭代器、生成器、协程函数及应用(面向过程实例)
2017-04-12 16:44
1051 查看
一、什么是迭代器协议
1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退)
2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法)
3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。
二,为什么要用迭代器
优点:
1:迭代器提供了一种不依赖于索引的取值方式,这样就可以遍历那些没有索引的可迭代对象了(字典,集合,文件)
2:迭代器与列表比较,迭代器是惰性计算的,更节省内存
缺点:
1:无法获取迭代器的长度,使用不如列表索引取值灵活
2:一次性的,只能往后取值,不能倒着取值
#grep -rl 'python' C:\egon import os,time def init(func): def wrapper(*args,**kwargs): res=func(*args,**kwargs) next(res) return res return wrapper #找到一个绝对路径,往下一个阶段发一个 @init def search(target): '找到文件的绝对路径' while True: dir_name=yield #dir_name='C:\\egon' print('车间search开始生产产品:文件的绝对路径') time.sleep(2) g = os.walk(dir_name) for i in g: # print(i) for j in i[-1]: file_path = '%s\\%s' % (i[0], j) target.send(file_path) @init def opener(target): '打开文件,获取文件句柄' while True: file_path=yield print('车间opener开始生产产品:文件句柄') time.sleep(2) with open(file_path) as f: target.send((file_path,f)) @init def cat(target): '读取文件内容' while True: file_path,f=yield print('车间cat开始生产产品:文件的一行内容') time.sleep(2) for line in f: target.send((file_path,line)) @init def grep(pattern,target): '过滤一行内容中有无python' while True: file_path,line=yield print('车间grep开始生产产品:包含python这一行内容的文件路径') time.sleep(0.2) if pattern in line: target.send(file_path) @init def printer(): '打印文件路径' while True: file_path=yield print('车间printer开始生产产品:得到最终的产品') time.sleep(2) print(file_path) g=search(opener(cat(grep('python',printer())))) g.send('C:\\egon') g.send('D:\\dir1') g.send('E:\\dir2')面向过程实例
相关文章推荐
- Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式
- 【Python基础】1.3.1 面向过程编程与面向对象编程(类)实例
- python-迭代器、生成器、内置函数及面向过程编程
- python基础-面向对像、类名\实例调用、__init__函数、类名\实例增删改查属性
- python基础之协程函数、列表表达式、生成器表达式
- python基础之生成器表达式形式、面向过程编程、内置函数部分
- python全栈开发-Day11 迭代器、生成器、面向过程编程
- Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分
- 第五章:Python基础の生成器、迭代器、序列化和虚拟环境的应用
- 第二天 Python3.4.2 函数的调用过程 生成器 yield
- Python的迭代器和生成器使用实例
- python特性(七):通过生成器函数构造序列对象的迭代器
- Python基础之生成器、迭代器
- Python 正则表达式---概念基础,匹配过程,表达式元字符和语法以及实例
- Python中的迭代器,生成器,协程(coroutine)--整理自CSDN微信公开课
- Python3基础 yield生成器 在函数中的用法 示例
- Python基础-几个基础函数应用
- python基础教程总结8——特殊方法,属性,迭代器,生成器,八皇后问题
- python基础-迭代器和生成器
- Python基础之函数用法实例详解