面向过程的程序设计


定义:

面向过程编程思想:流水线式的编程思想,在设计程序时,需要把整个流程设计出来
优点:
1.体系结构更加清晰 (耦合度强)
2.简化程序编程的复杂度

缺点:
1.可扩展性极其差,所以说面向过程的应用场景是:不需要经常变化的软件

 

实例:

1.

import os,time
def init(func):
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
next(res)
return res
return wrapper
'''
@init
def eater(name):
print('%s start to eat'%name)
food_list = []
while True:
food = yield food_list
print('%s eat %s'%(name, food))
food_list.append(food)

'''


#过程式编程

#找到一个绝对路径,往下一个阶段发一个
@init
def search(target): ##search的参数是opener的运行结果
'找到文件的绝对路径'
while True:
dir_name = yield
print('车间search开始生产产品:文件的绝对路径')
time.sleep(0.2)
g = os.walk(dir_name)
for i in g:
for k in i[-1]:
file_path = '%s/%s'%(i[0], k)
target.send(file_path)

@init
def opener(target):
'打开文件获取文件句炳'
while True:
file_path = yield
print('车间opener开始生产产品:文件句柄')
time.sleep(0.2)
with open(file_path) as f: #opener的参数是cat的运行结果
target.send((file_path, f)) #下一个阶段的生成器.send 传送
@init
def cat(target):
'读取文件内容'
while True:
file_path,f = yield
print('车间cat开始生产产品:文件的一行内容')
time.sleep(0.2)
for line in f:
target.send((file_path,line)) #send可以传送多个值,但必须元组类型
@init
def grep(pattern, target): #patten传的参数
'过滤一行内容有无关键需要的关键字'
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(0.2)
print(file_path)


g = search(opener(cat(grep('python',printer()))))
g.send('C:\egon')


车间search开始生产产品:文件的绝对路径
车间opener开始生产产品:文件句柄
车间cat开始生产产品:文件的一行内容
车间grep开始生产产品:包含python这一行文件的绝对路径
车间printer开始生产产品:得到最终的产品
C:egon/egon.txt
车间grep开始生产产品:包含python这一行文件的绝对路径
车间grep开始生产产品:包含python这一行文件的绝对路径
车间opener开始生产产品:文件句柄
车间cat开始生产产品:文件的一行内容
车间grep开始生产产品:包含python这一行文件的绝对路径
车间printer开始生产产品:得到最终的产品
C:egon/egon1.txt
车间grep开始生产产品:包含python这一行文件的绝对路径
车间grep开始生产产品:包含python这一行文件的绝对路径
车间opener开始生产产品:文件句柄
车间cat开始生产产品:文件的一行内容
车间grep开始生产产品:包含python这一行文件的绝对路径
车间grep开始生产产品:包含python这一行文件的绝对路径
车间grep开始生产产品:包含python这一行文件的绝对路径
车间printer开始生产产品:得到最终的产品
C:egona/a.txt
车间opener开始生产产品:文件句柄

  

函数就是定义阶段+调用阶段

  

原文地址:https://www.cnblogs.com/jiangshitong/p/6700241.html