面向過程的程式設計

2022-05-25 02:27:10 字數 2685 閱讀 7112

以下是個人理解:

面向過程有點像知道了起因經過結果,我們主要研究經過,這樣給出起因就會得到乙個自然而然地結果,而且只能得出這麼一種型別的結果,不會更改。

再舉個例子:學生好比起因,學校好比結果,學生到學校中這個『到』就是我們需要面向的過程,神轉折吧 ,重點在『到』上,這就是面向過程,我們需要做的的就是起床--洗漱---吃飯--坐車---下車   這麼乙個過程,如果中間一環出錯就到不了學校,這就是面向過程的程式設計思想,這麼做的好處是,能夠拆分乙個難得模組,將其一步步地實現。

下面做乙個物件導向的變成

實現 centos下的 grep -rl 'root' /etc

的效果

import os

def zhuangshi(cent):

def meiceng(*args,**kwargs):

g=cent(*args,**kwargs)

next(g)

return

g

return

meiceng

# 階段一

@zhuangshi

def search(target,*args):

'''#階段一是為了遍歷以下這個檔案同時得出資料夾內沒乙個檔案的絕對路徑

'''while

true:

start_path=yield

#通過傳入的方法傳進需要遍歷的位址

g=os.walk(start_path)#遞迴的命令os.walk遍歷乙個資料夾,檔案內的所有資料夾和檔案以三個列表的方式排列[當前檔案路徑][資料夾][檔案]

for far_dir,_,son_dir in

g:#迴圈迭代查詢以下每乙個路徑取出[當前檔案路徑],_,[檔名]的格式取出

for file in

son_dir:#遍歷子檔名

file_path=r'

%s\%s

' %(far_dir,file)#重組檔案目錄

target.send(file_path)#把每一次的絕對路徑返給下一階段的yeild

#階段2

@zhuangshi

def opener(target,*args):

'''階段2是為了講每乙個絕對路徑檔案進行乙個開啟的流程

'''while

true:

file_path=yield

#通過yeild得到上面的file_path的絕對路徑,目的是去扇面的覺都路徑給下面用

with open(file_path,encoding='

utf-8

') as

f:#從上面取到了1階段的函式中絕對路徑,我們這裡就可以直接進行乙個覺都路徑的開啟流程

target.send((file_path,f))#將開啟的路徑f,和絕對路徑傳給下面階段,這裡絕對路徑只為了後期使用

#這裡想傳給yeild兩個引數需要一元祖的形式這就是為什麼我要新增兩層括號

#階段三

@zhuangshi

def cat(target,*args):

'''階段三是為了從上面特供的開啟檔案進行逐行讀或者說逐行遍歷的過程沒有起的功能

'''while

true:

file_path,f=yield

#通過yeild接受上面穿過來的絕對路徑,開啟的檔案f

for line in

f:#開始逐行遍歷

res=target.send((file_path,line))#每行遍歷的內容給line,並且將得到的返回值複製給res使用,注意給兩個值需要是元祖

ifres: #如果res返回值為true那麼我們停止迴圈這個檔案,就可以迴圈下乙個檔案了

break

# 階段四

@zhuangshi

def grep(target,pattern):

'''這裡我們要做的是 將外部引來的條件進行對比如果在這一行我們就進行再傳

'''tag =false #建立乙個標誌位 初始是false

while

true:

tag =false #第一次進入while修改為false

file_path,line=yield

tag#從上面取出了檔案的路徑和每一行內容,將tag作為返回值返回給send階段四的哪個函式

if pattern in

line:#如果外部呼叫的內容在這一行說明我們要去取出的就是這個檔案路徑了

target.send(file_path)#傳給一下咯yield路徑

tag=true #如果確認篩選的在這一行證明這個檔案已經可以輸出了那麼我們修改為true。

#階段五

@zhuangshi

def printer():

'''列印出結果

'''while

true:

filename=yield

#接手上面的結果傳送給filename

print(filename)#列印及最後一步完成

g=search(opener(cat(grep(printer(),'

root

'))))#做成乙個函式

star_path=r'

h:\py聯絡\第一顆\d6

'#定義檔案的路徑

g.send(star_path)#將路徑send高階段一我們就可以將路徑活用

總共分成了5步,每一步執行一種事情

面向過程的程式設計

概念 核心是 過程 二字,過程 指的是解決問題的步驟,即先幹什麼再幹什麼,基於面向過程設計程式就好比在設計一條流水線,是一種機械式的思維方式。若程式一開始是要著手解決乙個打的問題,面向過程的基本設計思路就是把這個大的問題分解成很多個小問題或子過程,這些子過程再執行的過程中繼續分解,知道小問題足夠簡單...

面向過程的程式設計

定義 面向過程程式設計思想 流水線式的程式設計思想,在設計程式時,需要把整個流程設計出來 優點 1.體系結構更加清晰 耦合度強 2.簡化程式程式設計的複雜度 缺點 1.可擴充套件性極其差,所以說面向過程的應用場景是 不需要經常變化的軟體 例項 1.車間search開始生產產品 檔案的絕對路徑 車間o...

面向過程程式設計

目錄 二 分層實現功能 python從入門到放棄完整教程目錄 面向過程程式設計是解決問題的一種思想,相當於武林門派,武林門派之間沒有好壞之分,因此它與我們之後學習的物件導向程式設計其實沒有好壞之分。面向過程程式設計,核心是程式設計二字,過程指的是解決問題的步驟,即先幹什麼 後幹什麼 再幹什麼 然後幹...