一、消費者生產者模型初級app
二、獲取指定目錄下子目錄與文件ide
三、遞歸調用函數
--消費者生產者模型初級idea
def eater(name): print('%s start to eat' %name ) while True: food = yield print('%s eat %s' %(name,food)) alex_g = eater('alex')#先得到生成器 next(alex_g)#觸發函數使函數暫停到函數的yield alex_g.send('骨頭')#給yield發送個值,使yield賦值給food,而後執行函數
--#改進使其能交互,並使生產者獲取清單保存消費項目spa
def eater(name): food_list =[] print('%s start to eat' %name ) while True: food = yield food_list food_list.append(food) print('%s eat %s' %(name,food)) def producter(): alex_g = eater('alex') # 先得到生成器 next(alex_g) # 觸發函數使函數暫停到函數的yield while True: inp = input('>>>') print(alex_g.send(inp))#給yield發送個值,使yield賦值給food,而後執行函數 producter()
--改進使初始化咋裝飾器中進行code
def init(func): def wapper(*args,**kwargs): alex_g = func(*args,**kwargs) # 先得到生成器 next(alex_g) # 觸發函數使函數暫停到函數的yield return alex_g return wapper @init def eater(name): food_list =[] print('%s start to eat' %name ) while True: food = yield food_list food_list.append(food) print('%s eat %s' %(name,food)) def producter(): g = eater('alex')#調用eater函數--》裝飾器執行func(alex)得到生成器--》使暫停到eater的yield--》執行裝飾器中初始化--》將生成器返回給g while True: inp = input('>>>') print(g.send(inp))#給yield發送個值,使yield賦值給food,而後執行函數 producter()
--獲取指定目錄下子目錄與文件xml
import os t = os.walk(r'C:\Users\liguangxu\PycharmProjects\untitled2')#這裏會得到一個迭代器 print(next(t)) #得到該目錄下的子目錄與文件,元組的第一個元素爲指定目錄,第二個元素爲目錄下的文件夾,第三個元素爲指定目錄的文件 #('C:\\Users\\liguangxu\\PycharmProjects\\untitled2', ['.idea', '111', 'day3', 'day4', 'day5'], []) print(next(t)) #第一個元素爲第一個指定目錄下的文件夾,第二個元素爲第一個指定目錄下的文件夾下的文件夾,第三個爲指定目錄下的第一個目錄下的文件 #('C:\\Users\\liguangxu\\PycharmProjects\\untitled2\\.idea', [], ['misc.xml', 'modules.xml', 'untitled2.iml', 'workspace.xml']) #想要獲取指定目錄下的全部文件的絕對路徑的方法 import os t = os.walk(r'C:\Users\liguangxu\PycharmProjects\untitled2') for pardir,_,files in t:#將第一個元素(目錄)和第三個元素(目錄下的文件)拿到作拼接 for file in files: abspath = r'%s\%s'%(pardir,file) print(abspath)
--遞歸調用
#遞歸調用:在調用一個函數的過程當中,直接或者間接的調用了函數自己
#效率低,必須有一個明確的結束條件,沒進入更深一層遞歸時,問題規模相比上一次遞歸減小
#查看遞歸層級 sys.getrecursionlimit() 修改遞歸層級 sys.getrecursionlimit()blog
def age(n): if n == 1: return 18 return age(n-1)+2 print(age(5)) l = [1,2,[3,4,5,6,[7,8,9,[10,11,12]]]] def li(l): for item in l: if type(item) is list: li(item) else: print(item)