python 3 面向过程编程
核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就像设计好一条工业流水线,是一种机械式的思维方式。
1、优点:程序结构清晰,可以把复杂的问题简单化,流程化。
2、缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身。
3、应用场景:linux内核,git,httpd,shell脚本.
grep -rl 'error' /dir/
def init(func):def wrapper(*args,**kwargs):g=func(*args,**kwargs)next(g)return greturn wrapper#第一阶段:找到所有文件的绝对路径import os@initdef search(target):while True:filepath=yieldg=os.walk(filepath)for pardir,_,files in g:for file in files:abspath=r'%s\%s' %(dirpath,file)target.send(abspath)#第二阶段:打开文件 @initdef opener(target):while True:abspath=yieldwith open(abspath,'rb') as f:target.send((abspath,f))#第三阶段:循环读出每一行内容 @initdef cat(target):while True:abspath,f=yield #(abspath,f)for line in f:res=target.send((abspath,line))if res:break#第四阶段:过滤 @initdef grep(pattern,target):tag=Falsewhile True:abspath,line=yield tagtag=Falseif pattern in line:target.send(abspath)tag=True#第五阶段:打印该行属于的文件名 @initdef printer():while True:abspath=yieldprint(abspath)g = search(opener(cat(grep('error'.encode('utf-8'), printer()))))g.send(r'E:\project\PY18\lianxi\111222')