面向过程的程序设计-协成函数的应用
day24
面向过程的编程思想:
流水线式的编程思想,在设计程序时,需要把整个流程设计出来
优点:
1. 体系结构更加清晰
2. 简化程序的复杂度
缺点:
·1. 可扩展性极其的差,所以说面向过程的应用场景是:不需要经常变化的软件
例子:
需求:实现如linux中 grep -rl "python" /etc/ 的效果,输出/etc/目录下文件中带有python的文件名路径
import os
def init(func):
"这个装饰器用于执行第一next"
def wrapper(*args, **kwargs):
res = func(*args, **kwargs)
next(res)
return res
return wrapper
@init
def search(target):
"获取文件名"
while True:
dir_path = yield
g = os.walk(dir_path)
for dirname in g:
for filename in dirname[-1]:
file_path = "%s\%s" % (dirname[0], filename)
target.send(file_path)
@init
def openfile(target):
"打开文件"
while True:
file_path = yield
with open(file_path) as f:
target.send((file_path, f)) # 传两个值的时候要以元组的形式
@init
def cat(target):
"检索文件内容"
while True:
file_path, f = yield
for line in f:
target.send((file_path, line))
@init
def grep(keyword, target):
"过滤文件内容"
while True:
file_path, line = yield
if keyword in line:
target.send(file_path)
@init
def printer():
"打印文件路径"
while True:
file_path = yield
print(file_path)
o = search(openfile(cat(grep("python", printer()))))
o.send("E:\\test")
运行结果:
E:\test\a.txt E:\test\a2\a3.txt

共有 0 条评论