#定義階段import os,time
def init(func): #裝飾器的作用是使下面的生成器初始化,yield等著被傳值
res = func(*args,**kwargs)
next(res) #呼叫生成器初始化
return res
@init
def search(target):
'''找到檔案的絕對路徑'''
while true:
dir_name = yield
print("search開始工作:檔案的絕對路徑")
time.sleep(2) #加上睡眠時間是為了使看著更有效果
g = os.walk(dir_name)
for i in g:
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,encoding="utf8") as f:
target.send((file_path,f))
@init
def cat(target):
'''讀取檔案內容'''
while true:
file_path,f = yield
print("cat開始工作:讀取檔案內容")
time.sleep(0.3) #加上睡眠時間是為了使看著更有效果
for line in f:
target.send((file_path,line))
@init
def grep(pattern,target):
'''過濾一行內容中有需要內容,就把路徑傳給下面'''
while true:
file_path,line = yield
print("grep開始工作:過濾內容")
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("e:\michael")
---------------以下是輸出結果------------------
e:\michael\aa1.txt
e:\michael\aa\a1.txt
面向過程的程式設計思想:
流水線式的程式設計思想,在設計程式時,需要把整個流程設計出來。
優點:1:體系結構更加清晰
2:簡化程式的複雜度
缺點:可擴充套件性極其的差,所以說面向過程的應用場景是,不需要經常變化的軟體,如:linux核心,httpd,git等軟體。
python基礎之面向過程程式設計,模組
面向過程程式設計 面向過程的核心是過程,指的是解決問題的步驟,即先幹什麼再幹什麼,就好像設計一條流水線。優點 複雜的問題流程化,進而簡單化 缺點 可擴充套件性差,修改流水線的任意乙個階段,都會牽一髮而動全身 應用 擴充套件性要求不高的場景,典型案例如框架,linux核心,git 模組 1.什麼是模組...
python之物件導向程式設計
物件導向的程式設計的核心是物件 上帝式思維 要理解物件為何物,必須把自己當成上帝,上帝眼裡世間存在的萬物皆為物件,不存在的也可以創造出來。物件是特徵和技能的結合,其中特徵和技能分別對應物件的資料屬性和方法屬性。優點是 解決了程式的擴充套件性。對某乙個物件單獨修改,會立刻反映到整個體系中,如對遊戲中乙...
Python之物件導向程式設計
類和物件 類是抽象的模板,比如我們抽象乙個學生類,很容易想到學生固有的一些屬性,比如名字,年齡等等,建立乙個學生類 class student object pass 複製 這裡的object是表明student類是從哪個類繼承來的,在python中object是所有類的父類 繼承的概念下文會提及 ...