![Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第5-9章 - Python自定義函數(shù)- Python數(shù)據(jù)庫編程 - 副本_第1頁](http://file4.renrendoc.com/view12/M04/02/21/wKhkGWcYiP-AXhkhAAETywMU6oI549.jpg)
![Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第5-9章 - Python自定義函數(shù)- Python數(shù)據(jù)庫編程 - 副本_第2頁](http://file4.renrendoc.com/view12/M04/02/21/wKhkGWcYiP-AXhkhAAETywMU6oI5492.jpg)
![Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第5-9章 - Python自定義函數(shù)- Python數(shù)據(jù)庫編程 - 副本_第3頁](http://file4.renrendoc.com/view12/M04/02/21/wKhkGWcYiP-AXhkhAAETywMU6oI5493.jpg)
![Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第5-9章 - Python自定義函數(shù)- Python數(shù)據(jù)庫編程 - 副本_第4頁](http://file4.renrendoc.com/view12/M04/02/21/wKhkGWcYiP-AXhkhAAETywMU6oI5494.jpg)
![Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第5-9章 - Python自定義函數(shù)- Python數(shù)據(jù)庫編程 - 副本_第5頁](http://file4.renrendoc.com/view12/M04/02/21/wKhkGWcYiP-AXhkhAAETywMU6oI5495.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Python程序設(shè)計第5章Python自定義函數(shù)學習目標識記函數(shù)/lambda表達式語法理解函數(shù)要素掌握函數(shù)的使用知識目標能夠根據(jù)需求正確編寫函數(shù)能夠使用map()等高級函數(shù)簡化代碼能力目標專業(yè)精神與責任開源文化與版權(quán)意識情感態(tài)度與價值觀函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄函數(shù)概述函數(shù)定義函數(shù)調(diào)用函數(shù):封裝了特定任務實現(xiàn)的代碼塊內(nèi)置函數(shù)標準庫函數(shù)第三方庫函數(shù)自定義函數(shù)函數(shù)代碼非調(diào)用不執(zhí)行減少重復代碼,避免代碼冗余提高代碼的可讀性和可維護性代碼更加模塊化,便于組織和維護5.1函數(shù)概述985.2函數(shù)定義與調(diào)用99def函數(shù)名([參數(shù)列表]):#函數(shù)體[return返回值]def:定義函數(shù)的關(guān)鍵字函數(shù)名:遵循標識符的命名規(guī)則([參數(shù)列表]):代表函數(shù)必須從外部得到的數(shù)據(jù),不需要外部數(shù)據(jù)則小括號內(nèi)留空冒號:表示下一行開始進入函數(shù)體函數(shù)體:實現(xiàn)目標功能的語句塊,需要縮進return:返回語句,可以帶返回值,也可以不帶函數(shù)模擬切水果機器(定義部分)5.2函數(shù)定義與調(diào)用100deffruit_cutter(fruit):print(f'開始切{fruit}')pieces=list(fruit)returnpieces示例5-1def函數(shù)名([參數(shù)列表]):#函數(shù)體[return返回值]沒有返回值的函數(shù)直接調(diào)用有返回值的函數(shù)可將返回值賦值給其他變量5.2函數(shù)定義與調(diào)用100函數(shù)名([實際參數(shù)])變量=函數(shù)名([實際參數(shù)])函數(shù)模擬切水果機器(調(diào)用部分)5.2函數(shù)定義與調(diào)用100deffruit_cutter(fruit):print(f'開始切{fruit}')pieces=list(fruit)returnpiecesfruit_pieces=fruit_cutter('apple')print(fruit_pieces)#['a','p','p','l','e']示例5-1函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄函數(shù)返回值與參數(shù)020403變量作用域高階函數(shù)目
錄函數(shù)定義與調(diào)用01函數(shù)返回值函數(shù)參數(shù)返回值是函數(shù)內(nèi)部需要傳遞到函數(shù)外部的數(shù)據(jù)計算結(jié)果:面積計算、利息計算、三角函數(shù)狀態(tài)信息:數(shù)據(jù)是否保存成功、數(shù)據(jù)是否合法數(shù)據(jù)加工結(jié)果:排序結(jié)果、數(shù)據(jù)檢索結(jié)果返回值使用return語句返回給調(diào)用者Python函數(shù)返回值形式None單一值多個值5.3函數(shù)的返回值100返回None值沒有return語句,函數(shù)體執(zhí)行完畢返回時遇到return語句但return之后沒有數(shù)據(jù)時5.3函數(shù)的返回值100defsay_hello(name):
print(f'Hello,{name}!')ret_val=say_hello('張三')print(ret_val)#輸出結(jié)果:None示例5-2返回None值沒有return語句,函數(shù)體執(zhí)行完畢返回時遇到return語句但return之后沒有數(shù)據(jù)時5.3函數(shù)的返回值101defsay_hello(name):print(f'Hello,{name}!')ret_val=say_hello('張三')print(ret_val)#打印結(jié)果:None示例5-2defsave(name,age):ifnameisNoneorname=='':print(f'名字({name})不合法')returnifageisNoneorage<0:print(f'年齡({age}不合法)')returnprint('保存完畢!')ret_val=save('',18)print(ret_val)#打印結(jié)果:None示例5-3返回單一值(一個return)5.3函數(shù)的返回值101defsummary(a,b):returna+bret_val=summary(5,10)print(ret_val)示例5-4返回單一值(多個return)5.3函數(shù)的返回值101defto_level(score):ifscore>=90:return'優(yōu)'elifscore>=80:return'良'elifscore>=70:return'中'elifscore>=60:return'合格'else:return'不合格'示例5-5調(diào)用語句:ret_val=to_level(85)print(ret_val)返回多個值:多個數(shù)據(jù)被函數(shù)組合成元組返回5.3函數(shù)的返回值101deftop_1(data_list):max_val=max(data_list)idx=data_list.index(max_val)returnmax_val,idxret_val=top_1([1,19,4,-6,15,7])print(ret_val)#打印結(jié)果:(19,1)ret1,ret2=top_1([1,19,4,-6,15,7])print(ret1,ret2)#打印結(jié)果:191示例5-6參數(shù)傳遞方式?jīng)Q定函數(shù)如何接收外部數(shù)據(jù)位置參數(shù)默認參數(shù)關(guān)鍵字參數(shù)變長參數(shù)不可變實參和可變實參5.4參數(shù)傳遞103位置參數(shù):調(diào)用函數(shù)時,必須按照函數(shù)定義中形式參數(shù)的順序,提供實際參數(shù),不能隨意改變5.4.1位置參數(shù)103defrectangular_perimeter(height,width):return(height+width)*2ret=rectangular_perimeter(3,2)print(ret)打印結(jié)果:10示例5-7默認參數(shù):函數(shù)定義中可以為某些形參提供默認值,調(diào)用函數(shù)時如果沒有為這些參數(shù)提供實參,函數(shù)將自動傳入定義中指定的默認值5.4.2默認參數(shù)104defsay_hello(name='Python'):print(f'Hello,{name}!')say_hello() #打印結(jié)果:Hello,Python!say_hello('張三') #打印結(jié)果:Hello,張三!示例5-8關(guān)鍵字參數(shù):調(diào)用函數(shù)時通過“形參名=值”的語法指定參數(shù)的值,不必依賴定義中形參的位置順序5.4.3關(guān)鍵字參數(shù)104definfo(name,age,career):print(f'{name}今年{age}歲,職業(yè)為{career}')#打印結(jié)果:張三今年28歲,職業(yè)為飛行員info(name='張三',career='飛行員',age=28)示例5-9變長參數(shù):允許函數(shù)接收不定數(shù)量的實參*形參名:函數(shù)內(nèi)部將該參數(shù)做元組使用調(diào)用時依次傳入實參,逗號隔開5.4.4變長參數(shù)104definfo(*person):print(f'{person[0]}今年{person[1]}歲,職業(yè)為{person[2]}')#傳遞的實參:('張三',28,'飛行員')info('張三',28,'飛行員')示例5-10變長參數(shù):允許函數(shù)接收不定數(shù)量的實參**形參名:函數(shù)內(nèi)部將該參數(shù)做字典使用調(diào)用時使用關(guān)鍵字參數(shù)傳參5.4.4變長參數(shù)105definfo(**person):forkinperson:print(k,person[k])#傳遞的實參:{name:'張三',age:28,career:'飛行員'}info(name='張三',age=28,career='飛行員')示例5-11變長參數(shù)使用要點從函數(shù)定義中的參數(shù)列表看不出具體參數(shù)實現(xiàn)方和調(diào)用方應協(xié)商好參數(shù)的具體定義必要情況下提供相應的接口描述5.4.4變長參數(shù)105不可變實參:函數(shù)內(nèi)部對形參的修改不會影響實參5.4.5不可變實參與可變實參105defchange_value(a,b):a=bname='張三'change_value(name,'李四')print(name)#打印結(jié)果:張三示例5-12可變實參:函數(shù)內(nèi)部對形參的修改會反映到實參5.4.5不可變實參與可變實參105defchange_value(a,b):a[0]=binfo=['張三',28,'飛行員']change_value(info,'李四')print(info)#打印結(jié)果:['李四',28,'飛行員']示例5-13函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄變量作用域0304高階函數(shù)目
錄函數(shù)定義與調(diào)用0102函數(shù)返回值與參數(shù)全局變量局部變量global關(guān)鍵字變量作用域:變量能夠被使用的范圍全局變量局部變量5.5變量作用域108全局變量:定義在源文件中,處于函數(shù)、類定義之外的變量在整個程序運行期間都存在程序的任何位置都可以讀取和修改全局變量5.5.1全局變量108a=10 #定義全局變量ab=5 #定義全局變量bdefsummary(x,y):returnx+yprint(summary(a,b))#將a和b用作實參b+=1#修改變量b示例5-14局部變量:函數(shù)內(nèi)部定義的變量函數(shù)被調(diào)用時創(chuàng)建,函數(shù)執(zhí)行期間存在只能在該函數(shù)內(nèi)部使用5.5.2局部變量108defdemo():x=2#定義局部變量x
y=4#定義局部變量yprint(x,y)demo()
#打印結(jié)果:24print(x)
#報錯:NameError:name'x'isnotdefined示例5-15對于一個變量,當函數(shù)內(nèi)部僅讀取它時,認為該變量是全局變量5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo1():b=a+1#僅讀取a的值,在全局域中尋找aprint(a,b)demo1()#打印結(jié)果:1011示例5-16對于一個變量,當函數(shù)內(nèi)部對它賦值時,認為該變量是局部變量5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo2():a=20#定義局部變量a,和全局變量a同名,函數(shù)內(nèi)部將覆蓋全局變量ademo2()print(a)#打印結(jié)果:10示例5-17對于一個變量,當函數(shù)內(nèi)部對它賦值時,認為該變量是局部變量5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo3():print(a)a=30#a為局部變量,但上一行先使用了ademo3()#報錯示例5-17在函數(shù)內(nèi)部修改全局變量的值,需在函數(shù)內(nèi)部用global先行聲明5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo4():globala#聲明函數(shù)內(nèi)部使用全局變量aa=20demo4()print(a)#打印結(jié)果:20示例5-18global全局變量名函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄高階函數(shù)04目
錄函數(shù)定義與調(diào)用0102函數(shù)返回值與參數(shù)03變量作用域lambda表達式map()和filter()閉包高階函數(shù):能夠接受其他函數(shù)作為參數(shù),或者返回一個函數(shù)作為結(jié)果的函數(shù)5.6高階函數(shù)110lambda表達式:一種簡潔的函數(shù)定義方式,定義一個簡單的、單表達式的匿名函數(shù)參數(shù)列表:可以是任意數(shù)量的參數(shù),多個參數(shù)之間用逗號隔開表達式:通常是一個較為簡單的單一表達式,其值即為函數(shù)的返回值5.6.1lambda表達式lambda參數(shù)列表:表達式將lambda表達式定義的匿名函數(shù)存放在變量中,以變量名作為函數(shù)名調(diào)用5.6.1lambda表達式110f=lambdax,y,z:x+y+zresult=f(1,3,5)print(result)#打印結(jié)果:9示例5-19變量名=lambda參數(shù)列表:表達式使用lambda表達式對字典鍵值對排序5.6.1lambda表達式110emotions={0:'anger',-1:'sad',1:'happiness'}result=sorted(emotions.items(),key=lambdax:x[0])print(result)#打?。篬(-1,'sad'),(0,'anger'),(1,'happiness')]示例5-20map():接受一個函數(shù)和N個(N≥1)可迭代對象作為參數(shù),函數(shù)應用于可迭代對象的每個元素,并返回一個迭代器,其中包含應用函數(shù)后的結(jié)果通常將這個迭代器轉(zhuǎn)換成列表等數(shù)據(jù)結(jié)構(gòu)后再使用5.6.2map()與filter()111map(函數(shù)名,iterable1[,iterable2,...,iterableN]使用map()將列表所有字符串轉(zhuǎn)換為小寫5.6.2map()與filter()111fruits=['Apple','Banana','Cherry']result=map(str.lower,fruits)print(list(result))#打印結(jié)果:['apple','banana','cherry']示例5-21map()處理多個可迭代對象5.6.2map()與filter()111defmultiply(x,y):returnx*ylist1=[1,2,3,4,5]list2=[6,7,8,9,10]result=map(multiply,list1,list2)print(list(result))#打印結(jié)果:[6,14,24,36,50]result=map(lambdax,y:x*y,list1,list2)print(list(result))#打印結(jié)果:[6,14,24,36,50]示例5-22filter():用于篩選數(shù)據(jù),它接受一個函數(shù)和一個可迭代對象作為參數(shù),函數(shù)對可迭代對象的每個元素進行測試,并返回一個迭代器,其中包含測試結(jié)果為True的元素通常將這個迭代器轉(zhuǎn)換成列表等數(shù)據(jù)結(jié)構(gòu)后再使用5.6.2map()與filter()111filter(函數(shù)名,可迭代對象)filter()篩選偶數(shù)5.6.2map()與filter()112defis_even(x):returnx%2==0numbers=[1,2,3,4,5]result=filter(is_even,numbers)print(list(result))#打印結(jié)果:[2,4]result=filter(lambdax:x%2==0,numbers)print(list(result))#打印結(jié)果:[2,4]示例5-23閉包:高階函數(shù)的一種特殊形式一個函數(shù)(記作“外層函數(shù)A”)定義中嵌套了另一個函數(shù)(記作“內(nèi)嵌函數(shù)B”)當外層函數(shù)A執(zhí)行并返回內(nèi)層函數(shù)B時,如果內(nèi)嵌函數(shù)B需要訪問外層函數(shù)A的局部變量,那么這個被返回的函數(shù)對象B就形成了一個閉包5.6.3閉包112必須有一個內(nèi)嵌函數(shù)內(nèi)嵌函數(shù)里必須引用定義在外層函數(shù)里的變量外層函數(shù)必須返回內(nèi)層函數(shù)定義閉包5.6.3閉包112defcreate_model(factor):#外層函數(shù)create_model()offset=100
#內(nèi)層函數(shù)calc()defcalc(x):
#內(nèi)層函數(shù)引用外部變量returnx*factor+offsetreturncalc#返回內(nèi)層函數(shù)示例5-24外層函數(shù)A執(zhí)行完畢后,閉包仍然可以訪問A中的局部變量調(diào)用閉包5.6.3閉包112model=create_model(3)#創(chuàng)建一個factor為3的閉包result=model(2)#使用閉包計算參數(shù)為2時的結(jié)果print(result)#打印結(jié)果:106示例5-25本章結(jié)束Python程序設(shè)計第6章Python文件操作學習目標了解文本/二進制文件識記文件打開模式掌握文件和目錄基本操作知識目標能夠操作文本文件和CSV文件能夠完成基本目錄操作能力目標數(shù)據(jù)完整性的重視良好組織結(jié)構(gòu)對提高效率和減少錯誤的影響情感態(tài)度與價值觀文件概述01020403文本文件操作CSV文件操作目錄操作目
錄文件概述01020403文本文件操作CSV文件操作目錄操作目
錄文件分類文件操作函數(shù)文件:計算機系統(tǒng)中用于存儲信息的一種機制,允許將數(shù)據(jù)永久保存在磁盤或其他外存儲器上文本文件二進制文件6.1文件概述120文本文件:保存字符編碼的文件ASCIIUNICODEUTF-8GBK*.txt、*.html/*.htm、*.json、*.log、*.ini、源代碼文件(*.py、*.cpp、*.java)6.1.1文件分類120二進制文件:保存數(shù)據(jù)在內(nèi)存中的字節(jié)序列序列化:將內(nèi)存中的數(shù)據(jù)對象以字節(jié)序列寫入文件的過程反序列化:從文件中讀取字節(jié)序列再轉(zhuǎn)換成內(nèi)存數(shù)據(jù)對象的過程壓縮文件(*.zip、*.7z)可執(zhí)行文件(*.exe、*.dll、*.so)圖像文件(*.bmp、*.png、*.jpg)音視頻文件(*.mp3、*.mp4、*.avi)專有文件(*.dwg、*.psd、*.trec)6.1.1文件分類121內(nèi)置函數(shù)處理文本/二進制文件open()read()、write()、……close()標準庫:csv、configparser、zipfile、pickle、sqlite3第三方庫:openpyxl、python-docx、OpenCV、librosa、Pillow6.1.2文件操作函數(shù)121文件概述01020403文本文件操作CSV文件操作目錄操作目
錄文本文件操作020403CSV文件操作目錄操作目
錄文件概述01打開文本文件讀/寫文本文件關(guān)閉文本文件Python使用“文件對象”與文本文件交互open()打開文件并獲取一個文件對象調(diào)用文件對象的方法讀寫內(nèi)容close()關(guān)閉文件6.2文本文件操作121open():打開文本文件并返回一個文件對象,以便進行后續(xù)的操作file:要打開的文件路徑字符串,可以是絕對路徑,也可以是相對路徑(相對于當前正在運行的*.py文件)mode:可選,指定文件打開模式的字符串6.2.1打開文件121變量=open(file[,optional_params])f1=open('demo.txt')f2=open('E:/points.dat','rb')6.2.1打開文件122字符串說明讀寫模式'r'僅讀?。J),從文件頭開始讀取,如果文件不存在則報錯'w'僅寫入,如果文件不存在則創(chuàng)建新的空文件,如果存在則清空文件內(nèi)容'x'排它性創(chuàng)建,如果文件已存在則報錯'a'追加模式,如果文件不存在則創(chuàng)建新的空文件,如果存在則在末尾追加內(nèi)容'+'讀寫模式,可同時讀取和寫入,與r、w、x、a模式組合使用文件模式't'文本模式(默認),以文本格式打開文件'b'二進制模式,以二進制格式打開文件readlines([hint])讀取文件的每一行,返回一個包含讀取行的列表hint:可選,控制讀取的行數(shù),不指定則讀取全部行6.2.2讀取文件122f=open('names.txt')lines=f.readlines()#lines是一個列表forlinlines:#l是一個字符串print(l.strip('\n'))示例6-2readline([size])讀取文件下一行中的size個字符并返回,未指定size默認讀取整行適合文件較大的情況,循環(huán)調(diào)用處理多行數(shù)據(jù)6.2.2讀取文件122f=open('names.txt')line=f.readline()#line是一個字符串,包含一行的內(nèi)容whileline!='':print(line)line=f.readline()示例6-3全文按行處理時,可直接遍歷文件對象,效果和循環(huán)調(diào)用readline()一樣6.2.2讀取文件123f=open('names.txt')forlinf:#l是一個字符串,包含一行的內(nèi)容print(l)示例6-4read([size])從文件中讀取size個字符,以一個字符串的形式返回未指定size默認讀取所有內(nèi)容6.2.2讀取文件123f=open('names.txt','r')contents=f.read()#contents是一個字符串print(contents)示例6-4writelines(string_list)接收一個所有元素均為字符串的列表對象作為參數(shù),依次將每個字符串寫入文件該方法不會自動在每個字符串后添加換行符6.2.3寫入文件123f=open('writelines_demo.txt','w')names=['Danie','Kitty','Branda']f.writelines(names)示例6-7close():關(guān)閉文件確保所有的數(shù)據(jù)都被正確地寫入到磁盤釋放系統(tǒng)資源6.2.4關(guān)閉文件124f=open('writelines_demo.txt','w')names=['Danie','Kitty','Branda']f.writelines(names)f.close()示例6-8with子句:確保文件在代碼塊執(zhí)行完畢后自動關(guān)閉6.2.4關(guān)閉文件124withopen('writelines_demo.txt','w')asf:
names=['Danie','Kitty','Branda']
f.writelines(names)示例6-9文件概述01020403文本文件操作CSV文件操作目錄操作目
錄CSV文件操作0304目錄操作目
錄文件概述0102文本文件操作csv模塊讀/寫CSV文件CSV文件:CommaSeparatedValues,純文本文件,用于存儲表格數(shù)據(jù)可以包含任意數(shù)量的記錄一般情況下一行一條記錄,不同字段用逗號分隔可與excel文件互相轉(zhuǎn)換,也可在Excel軟件中編輯6.3CSV文件操作131內(nèi)置csv模塊,可直接導入讀寫CSV文件之前需要通過open()獲取文件對象6.3.1導入模塊131importcsvcsv.reader():創(chuàng)建一個csv閱讀器對象,該對象是可迭代對象,通過遍歷該對象處理文件的每一行6.3.2讀取文件131importcsvwithopen('csv_read_demo.csv')asf:reader=csv.reader(f)next(reader)#跳過標題行forrowinreader:sex='女'ifrow[2]=='F'else'男'print(f'{row[0]},{sex},學號是{row[1]}')示例6-14csv.writer():創(chuàng)建一個csv寫入器對象,通過該對象的writerow()/writerows()寫入內(nèi)容6.3.3寫入文件132importcsvtitle=['姓名','職業(yè)','年齡']rows=[['張三','飛行員',32],['李四','工程師',28],['錢五','插畫師',26]]withopen('write_csv_demo.csv','w',newline='')asf:writer=csv.writer(f)writer.writerow(title)writer.writerows(rows)示例6-15文件概述01020403文本文件操作CSV文件操作目錄操作目
錄目錄操作04目
錄文件概述0102文本文件操作03CSV文件操作移動/復制/刪除文件創(chuàng)建/刪除/遍歷目錄文件路徑操作目錄是組織和管理文件的關(guān)鍵組件shutil模塊os模塊6.4目錄操作136shutil模塊move():移動文件,移動后原位置的文件不存在copy():拷貝文件,復制后不會更改原文件若目標位置已經(jīng)存在同名文件,該文件將被覆蓋6.4.1文件移動和復制136importshutilsrc1='src_files/230114.log'#原文件路徑dst1='dst_files/230114.log'#目標文件路徑shutil.move(src1,dst1)#移動文件src2='src_files/230115.log'#原文件路徑dst2='dst_files/230115.log'#目標文件路徑shutil.copy(src2,dst2)#復制文件示例6-16os模塊remove():刪除文件,操作不可逆6.4.2文件刪除136importosfile_path='src_files/230116.log'os.remove(file_path)示例6-17os模塊mkdir():創(chuàng)建目錄rmdir():刪除目錄6.4.3目錄創(chuàng)建和刪除136importosdir_path='test_dir1'os.mkdir(dir_path)os.rmdir(dir_path)示例6-18os.walk():遞歸遍歷指定目錄每次返回一個三元組:(dirpath,dirnames,filenames)dirpath:當前正在遍歷的目錄路徑dirnames:該目錄下的子目錄列表filenames:該目錄下的非目錄文件列表6.4.4目錄遍歷136importosforroot,dirs,filesinos.walk('E:/src/'):forfileinfiles:print(os.path.join(root,file))示例6-19os.listdir():返回指定目錄下所有文件和子目錄的列表,不遞歸遍歷子目錄6.4.4目錄遍歷137importosfiles=os.listdir('../chapter06')forfileinfiles:print(file)示例6-20os.path.exists():檢查指定文件或目錄是否存在,如果存在則返回True,否則返回False6.4.5文件路徑操作137importosimportshutilsrc='src_files/230115.log'#原文件路徑dst='dst_files/230115.log'#目標文件路徑ifos.path.exists(dst):next_step=input(f'{dst}已存在,仍要復制嗎?(Y/n):')ifnext_step=='Y':shutil.copy(src,dst)print('拷貝完成!')else:print('拷貝停止!')示例6-21os.path.join():將多個路徑拼接成一個完整的文件路徑字符串6.4.5文件路徑操作137importosroot=r'E:\src'sub_dir='chapter06'file_name='demo.txt'full_path=os.path.join(root,sub_dir,file_name)print(full_path)#打?。篍:\src\chapter06\demo.txt示例6-22os.path.abspath():返回指定文件的絕對路徑,如果給定的路徑已經(jīng)是絕對路徑,則返回該路徑;否則將其轉(zhuǎn)換為絕對路徑6.4.5文件路徑操作138importosrelative_path='6-18.py'absolute_path=os.path.abspath(relative_path)#打印結(jié)果:E:\src\chapter06\6-18.pyprint(absolute_path)示例6-23解析文件路徑os.path.dirname():返回指定文件的目錄部分,不含文件名部分os.path.basename():返回指定路徑的文件名部分,不含目錄部分os.path.splitext():將文件路徑按最后一個“.”分割,返回一個包含文件名和擴展名的元組6.4.5文件路徑操作1386.4.5文件路徑操作138importosfull_path=r'E:\src\demo.py'dir_path=os.path.dirname(full_path)
#目錄部分base_name=os.path.basename(full_path)
#完整文件名#文件名、擴展名file_name,ext=os.path.splitext(base_name) print(dir_path) #打印結(jié)果:E:\srcprint(base_name) #打印結(jié)果:demo.pyprint(file_name) #打印結(jié)果:demoprint(ext) #打印結(jié)果:.py示例6-24本章結(jié)束Python程序設(shè)計第7章Python面向?qū)ο缶幊虒W習目標識記類的語法理解面向?qū)ο笕筇卣髡莆彰嫦驅(qū)ο笕筇卣鞯氖褂梅椒ㄖR目標能夠正確編寫Python類能夠使用Python類解決實際問題能力目標數(shù)據(jù)隱私的尊重和保護創(chuàng)新精神和可持續(xù)發(fā)展意識多樣性思維和包容性情感態(tài)度與價值觀Python類與對象01020403封裝繼承多態(tài)目
錄Python類與對象01020403封裝繼承多態(tài)目
錄面向?qū)ο蠡靖拍铑惖亩x對象的使用面向過程程序設(shè)計以算法為中心問題->一系列步驟制作蛋糕:準備材料->攪拌面糊->烤制蛋糕胚->涂抹奶油->裱花裝飾mix_batter(flour)bake_cake(power,minites)spread_cream(color)decoration(cream,ftruits,chocolate)面向?qū)ο蟪绦蛟O(shè)計7.1.1面向過程與面向?qū)ο蟪绦蛟O(shè)計1457.1.2類與對象146現(xiàn)實含義面向?qū)ο蟪绦蛟O(shè)計類和對象類一群具有相似特征或行為的個體的統(tǒng)稱模板或者藍圖規(guī)定了一組屬性(變量)和一組方法(函數(shù))屬于自定義的數(shù)據(jù)類型人類-張三寵物類-薩摩耶肉包微波爐類-貨架上待售的某臺微波爐對象某個類的一個具體實例,具有該類的屬性和行為根據(jù)模板將屬性值具體化之后,得到的一個類的實例個體擁有具體的屬性值能使用類定義的方法封裝:將數(shù)據(jù)和操作捆綁在一起,形成一個類定義每個類的職責隱藏了內(nèi)部實現(xiàn)細節(jié)提高代碼可讀性和可維護性增加了數(shù)據(jù)的安全性和可靠性。繼承:從已有的類派生出新類的過程避免重復編寫相同的代碼方便系統(tǒng)擴展多態(tài):提高了代碼的靈活性和擴展性7.1.3面向?qū)ο笕筇卣?467.2類的定義與對象使用1477.2.1關(guān)鍵字class147class:定義類定義一個空類class類名:#類體classCircle:pass示例7-17.2.2類屬性和類方法147類屬性:與類本身關(guān)聯(lián)的屬性所有對象能夠共享的屬性對于具體的實例來說意義不大類屬性位于類的頂部,定義在類的任何方法之外使用類屬性class類名:類屬性1=值1類屬性2=值2類名.類屬性名7.2.2類屬性和類方法148類屬性的定義和使用classCircle:pi=3.14159default_line_color='黑色'default_fill_color='白色'print(Circle.pi)Circle.default_line_color='紅色'示例7-27.2.2類屬性和類方法148類方法:封裝與類屬性有關(guān)、與實例無關(guān)的功能不能直接訪問實例屬性和實例方法調(diào)用類方法class類名:@classmethoddef類方法名(cls,參數(shù)列表)#函數(shù)體類名.類方法(除cls之外的參數(shù)值)使用裝飾器@classmethodcls:代表該方法所屬的類,在類方法內(nèi)部將cls當類名使用7.2.2類屬性和類方法148類方法的定義和使用classCircle:@classmethoddefset_default_color(cls,line,fill):cls.default_line_color=linecls.default_fill_color=fillCircle.set_default_color('深藍色','淺藍色')示例7-37.2.3實例屬性和實例方法149實例屬性:類的對象各自持有的屬性標識對象本身的特征值與對象自身密切關(guān)聯(lián),不應與其他對象共享舉例每個人的身份證號每臺洗衣機的品牌和型號每本書的書名和作者實例屬性通常寫在類的__init__()方法中7.2.3實例屬性和實例方法149__init__()方法調(diào)用時機:創(chuàng)建類的新對象時作用:初始化新對象命名:__方法名__特定場景下自動調(diào)用開發(fā)者考慮具體實現(xiàn)魔術(shù)方法class類名:def__init__(self,參數(shù)1,參數(shù)2,...,參數(shù)N)self.實例屬性1=參數(shù)1self.實例屬性2=參數(shù)2...self.實例屬性N=參數(shù)Nself:代表即將被創(chuàng)建出來的新對象self.實例屬性名=值7.2.3實例屬性和實例方法149實例屬性的定義classCircle:def__init__(self,r,line_color=default_line_color,fill_color=default_fill_color):self.r=rself.line_color=line_colorself.fill_color=fill_color示例7-47.2.3實例屬性和實例方法149實例的創(chuàng)建變量名=類名(__init__()方法中除了self之外的參數(shù))classCircle:def__init__(self,r,
ine_color=default_line_color,fill_color=default_fill_color):
self.r=rself.line_color=line_colorself.fill_color=fill_colorc1=Circle(1.0)c2=Circle(2.0,'紅色','黃色')示例7-47.2.3實例屬性和實例方法150實例屬性的使用對象.實例屬性名classCircle:def__init__(self,r,
line_color=default_line_color,fill_color=default_fill_color):self.r=rself.line_color=line_colorself.fill_color=fill_colorc1=Circle(1.0)c2=Circle(2.0,'紅色','黃色')print(f'半徑{c1.r},線條{c1.line_color},填充{c1.fill_color}')示例7-47.2.3實例屬性和實例方法150實例方法:與具體的對象關(guān)聯(lián)的方法需要對象執(zhí)行的行為調(diào)用實例方法class類名:def實例方法名(self,參數(shù)1,參數(shù)2,...,參數(shù)N)#代碼塊對象.實例方法(除self之外的其他參數(shù))self:代表正在調(diào)用這個實例方法的對象7.2.3實例屬性和實例方法150實例方法的定義與調(diào)用classCircle:def__init__(self,r,
line_color=default_line_color,fill_color=default_fill_color):self.r=rself.line_color=line_colorself.fill_color=fill_color
defdraw(self):print(f'繪制圓:半徑{self.r},線條{self.line_color},填充{self.fill_color}')c1=Circle(2.0,'紅色','黃色')c1.draw()示例7-57.2.4靜態(tài)方法150靜態(tài)方法邏輯上功能和類相關(guān)放在類中更合適通過“類名.靜態(tài)方法()”調(diào)用class類名:@staticmethoddef方法名(參數(shù)列表)#函數(shù)體使用裝飾器@staticmethod7.2.4靜態(tài)方法151靜態(tài)方法的定義和調(diào)用classCircle:pi=3.14159@staticmethoddefcalc_area(r):returnr**2*Circle.piprint(Circle.calc_area(2.0))示例7-6Python類與對象01020403封裝繼承多態(tài)目
錄封裝020403繼承多態(tài)目
錄Python類與對象01Python實現(xiàn)封裝@property7.3封裝151封裝:信息隱藏只對外提供必要的屬性和方法,提高代碼安全性外部不關(guān)心對象內(nèi)部的實現(xiàn)細節(jié),簡化編程過程訪問控制私有保護公有可以公開:名字受保護的:財產(chǎn)絕對不能公開:秘密7.3.1Python實現(xiàn)封裝151Python沒有明確的訪問控制符保護屬性或方法:單下劃線“_”開始,規(guī)范上約定不能直接使用(用了也不會報錯)私有屬性或方法:雙下劃線“__”開始,語法上不能直接使用(用了會報錯)classDemo1:def__init__(self):self.__private_data=0
def__private_method(self):print('一個前置雙下劃線命名的私有方法')示例7-77.3.1Python實現(xiàn)封裝151classCircle:definfo(self):print(self.__private_data)self.__private_method()d1=Demo1()print(d1.__private_data)#報錯:AttributeErrord1.__private_method()#報錯:AttributeError
print(d1._Demo1__private_data)d1._Demo1__private_method()示例7-77.3.1Python實現(xiàn)封裝152前置單下劃線命名保護的屬性和方法classDemo2:def__init__(self):self._protected_data=0def_protected_method(self):print('一個前置單下劃線命名的保護方法')definfo(self):print(self._protected_data)self._protected_method()d2=Demo2()print(d2._protected_data)d2._protected_method()示例7-87.3.2@property152通過實例方法get_r()和set_r()讀寫半徑classCircle:def__init__(self):self.__r=Nonedefget_r(self):returnself.__rdefset_r(self,r):if(isinstance(r,int)orisinstance(r,float))andr>0:self.__r=relse:print('r必須是大于0的整數(shù)或浮點數(shù).')示例7-97.3.2@property152通過實例方法get_r()和set_r()讀寫半徑@property:定義對象屬性訪問器將一個實例方法偽裝成實例屬性簡潔代碼c1=Circle()c1.set_r(2.0)print(c1.get_r())#打印結(jié)果:2.0示例7-97.3.2@property153@property定義只讀屬性fromdatetimeimportdateclassPerson:def__init__(self,name,born):=nameself.born=born示例7-107.3.2@property153@property定義只讀屬性
@propertydefage(self):today=date.today()birthday=self.born.replace(year=today.year)ifbirthday>today:returntoday.year-self.born.year-1else:returntoday.year-self.born.yearp1=Person('',date(1990,5,15))print(p1.age)#打印結(jié)果:33示例7-107.3.2@property153@property定義讀/寫屬性classCircle:def__init__(self):self.__r=None@propertydefr(self):returnself.__r示例7-117.3.2@property153@property定義讀/寫屬性
@r.setterdefr(self,r):if(isinstance(r,int)orisinstance(r,float))andr>0:self.__r=relse:print('r必須是大于0的整數(shù)或浮點數(shù).')c1=Circle()c1.r=2.0print(c1.r)#打印結(jié)果:2.0示例7-11Python類與對象01020403封裝繼承多態(tài)目
錄繼承0304多態(tài)目
錄Python類與對象0102封裝代碼復用擴展新特性7.4.1代碼復用161繼承:從已有的類派生新的子類,子類完全繼承父類的公有屬性和公有方法實現(xiàn)代碼復用,減少類之間代碼冗余子類添加新屬性/方法,靈活擴展生命值攻擊值派生成長等級escape()派生攻擊傾向Spirit類Pet類Monster類7.4.1代碼復用繼承語法class子類名(父類名):#子類實現(xiàn)7.4.1代碼復用161Spirit類派生子類Pet和MonsterclassSpirit:def__init__(self,life=100,aggro=False):self.life=lifeself.current_life=lifeself.aggro=aggrodefis_live(self):returnFalseifself.current_life<=0elseTruedefis_aggro(self):returnself.aggro示例7-127.4.1代碼復用161Spirit類派生子類Pet和MonsterclassPet(Spirit):passclassMonster(Spirit):passp1=Pet(100,True)#調(diào)用父類的__init__()m1=Monster(400,False)#調(diào)用父類的__init__()print(p1.life,p1.current_life,p1.aggro)print(m1.life,m1.current_life,m1.aggro)示例7-127.4.2擴展新特性161擴展新特性class子類名(父類名)子類類屬性=值def__init__(self,參數(shù)列表):
#初始化繼承的實例屬性super().__init__(參數(shù)列表)
self.子類實例屬性=值super():內(nèi)置函數(shù),用于調(diào)用父類的方法,此處調(diào)用確保父類中的初始化代碼正確執(zhí)行子類__init__()方法的參數(shù)列表常常要包含父類初始化所需的參數(shù)7.4.2擴展新特性162子類Monster添加新方法classMonster(Spirit):def__init__(self,life=100,aggro=False,exp=200):super().__init__(life,aggro)self.exp=expdefescape(self):p=random.randint(1,100)ifp<=40:print('逃跑成功!')self.current_life=self.lifeelse:print('逃跑失敗!')示例7-137.4.2擴展新特性162子類Monster添加新方法
defcalc_damage(self,damage):self.current_life-=damageifself.current_life<=0:print('怪物被消滅!')elifself.current_life<100:print('觸發(fā)逃跑事件!')self.escape()#調(diào)用Monster的__init__()m1=Monster(400,False,100)m1.calc_damage(320)#怪物受到320點傷害示例7-13Python類與對象01020403封裝繼承多態(tài)目
錄多態(tài)04目
錄Python類與對象0102封裝03繼承Python多態(tài)實現(xiàn)7.5多態(tài)163多態(tài):繼承體系中,不同子類對父類的同名方法表現(xiàn)出不同行為同一繼承體系子類重新實現(xiàn)父類同名方法(不重寫=用父類的)舉例RPG游戲不同的游戲角色攻擊計算方式有所不同在桌面應用程序中,按鈕、下拉框、文本框等控件,都可以響應用戶鼠標單擊的行為,但不同控件對應的處理不同不同的圖形面積計算方式不同7.5多態(tài)163鴨子類型(ducktyping):在程序設(shè)計中是動態(tài)類型的一種風格,在這種風格中,一個對象有效的語義,不是由繼承自特定的類或?qū)崿F(xiàn)特定的接口,而是由“當前方法和屬性的集合”決定在鴨子類型中,關(guān)注點在于對象能作什么,而不是關(guān)注對象所屬的類型7.4.2擴展新特性163Python多態(tài)的使用classShape:defarea(self):passclassCircle(Shape):def__init__(self,radius):self.radius=radiusdefarea(self):returnself.radius**2*3.14示例7-147.4.2擴展新特性163Python多態(tài)的使用classRectangle(Shape):def__init__(self,width,height):self.width=widthself.height=heightdefarea(self):returnself.width*self.heightshapes=[Circle(2.0),Rectangle(4,2)]forsinshapes:print(s.area())示例7-147.4.2擴展新特性163Python多態(tài)的使用classDog:def__init__(self,name):=name
defarea(self):returnf'或許可以計算{}影子的面積?'shapes=[Circle(2.0),Rectangle(4,2),Dog('Lucky')]forsinshapes:print(s.area())示例7-14本章結(jié)束Python程序設(shè)計第8章PythonGUI編程學習目標理解事件處理機制掌握各種組件的使用方法知識目標能夠編寫事件處理函數(shù)實現(xiàn)交互能夠編寫簡單的GUI程序能力目標創(chuàng)新和個性化設(shè)計用戶體驗重要性情感態(tài)度與價值觀GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目
錄GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目
錄了解tkinter程序GUI編程基本概念GUI編程:專注設(shè)計具有圖形界面的應用程序窗口控件布局事件處理Python
GUI庫tkinterPyQtwxPython8.1PythonGUI編程概述169導入tkinter模塊importtkinterastk創(chuàng)建GUI主窗體main_win=tk.Tk()
啟動消息主循環(huán),在主循環(huán)中等待用戶觸發(fā)事件main_win.mainloop()8.1.1初識tkinter程序179第一個tkiner程序:主窗口創(chuàng)建及設(shè)置部分8.1.1初識tkinter程序170importtkinterastk#主模塊#1、構(gòu)建頂層Tk對象main_win=tk.Tk()#創(chuàng)建主窗口#設(shè)置窗口標題main_win.title('我的第一個tkinter窗口')#設(shè)置窗口大?。簩挾葂高度main_win.geometry('300x100')#3、進入主循環(huán),等待用戶操作main_win.mainloop()示例8-1第一個tkiner程序:創(chuàng)建窗口內(nèi)的控件部分8.1.1初識tkinter程序170importtkinter.ttkasttk#帶主題的控件集模塊#2、創(chuàng)建窗口內(nèi)的控件#創(chuàng)建一個標簽控件label1=ttk.Label(main_win,text='你好,tkinter!')label1.pack()#布局標簽控件#創(chuàng)建一個按鈕控件button1=ttk.Button(main_win,text='點我!',command=button_click)button1.pack()#布局按鈕控件示例8-1第一個tkiner程序:按鈕響應單擊事件處理部分8.1.1初識tkinter程序170#消息窗口模塊importtkinter.messageboxasmessagebox#按鈕被點擊時的處理函數(shù)defbutton_click():messagebox.showinfo('消息','按鈕"點我!"被點擊了!')示例8-1第一個tkiner程序:運行結(jié)果8.1.1初識tkinter程序1718.1.2GUI編程基本概念171容器:用于承載和組織其他控件的元素控件:GUI中用戶與之交互的元素布局:指控件在容器中的排列方式事件:描述用戶動作或系統(tǒng)狀態(tài)變化事件響應:程序?qū)τ|發(fā)的事件作出的反應綁定:將事件與事件響應關(guān)聯(lián)起來的過程回調(diào)函數(shù):一種編程技術(shù)GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目
錄tkinter布局020403事件綁定tkinter常用控件目
錄GUI編程概述01pack布局grid布局place布局8.2tkinter布局172布局樣式基本使用方式布局特點適用于pack布局對象.pack()按控件調(diào)用pack()的順序布局少量組件或簡單布局grid布局對象.grid(row,col)二維表格布局,以行和列標定組件放置的網(wǎng)格結(jié)構(gòu)化、布局規(guī)整對齊的界面place布局對象.place(x,y)自由度,精確控制組件的位置和大小精確控制位置或復雜布局GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目
錄事件綁定0304tkinter常用控件目
錄GUI編程概述0102tkinter布局隱式綁定顯式綁定tkinter支持的綁定行為某個控件對象綁定事件與處理函數(shù)某個控件類的所有對象綁定同一事件為窗口中所有控件綁定同一事件tkinter綁定方式隱式綁定顯式綁定8.3事件綁定176隱式綁定:通常經(jīng)控件的構(gòu)造函數(shù)或設(shè)置方法實現(xiàn)創(chuàng)建對象時指定command參數(shù)為一個函數(shù)名,該函數(shù)會隱式地綁定到該控件默認的事件上8.3.1隱式綁定176defon_btn_click():btn2.config(text='點擊了上面的按鈕!')btn1=ttk.Button(main_win,text='隱式綁定',command=on_btn_click)btn1.pack(padx=20,pady=30)btn2=ttk.Button(main_win,text='文本會改變')btn2.pack(padx=20,pady=30)示例8-5顯式綁定:通過控件對象的bind()方法指定事件及其響應函數(shù)event:具體的事件,是一個字符串func:響應函數(shù)的名字當event事件觸發(fā)時,程序會自動調(diào)用函數(shù)func8.3.2顯式綁定177控件對象.bind(event,func)8.3.2顯式綁定177事件類型觸發(fā)方式舉例事件字符串寫法用戶交互事件用戶動作直接觸發(fā)單擊鼠標左鍵雙擊鼠標左鍵按下鍵盤按鍵<事件字符串><Button-3>:右鍵單擊控件虛擬事件不依賴用戶的實際操作,可通過代碼觸發(fā)Text控件的剪貼/拷貝/粘貼事件Notebook控件的選項卡切換事件<<事件字符串>><<ComboboxSelected>>:下拉列表中某個元素被選擇bind()顯式綁定事件8.3.2顯式綁定177defon_btn_right_click(event):messagebox.showinfo('消息','右鍵單擊按鈕')defon_combo_selected(event):messagebox.showinfo('消息',combo.get())btn=ttk.Button(main_win,text='顯式綁定,右鍵單擊')btn.bind('<Button-3>',on_btn_right_click)combo=ttk.Combobox(main_win,values=('西瓜','番茄','柚子'))combo.bind('<<ComboboxSelected>>',on_combo_selected)示例8-6GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目
錄tkinter常用控件04目
錄GUI編程概述0102tkinter布局03事件綁定常用控件控件創(chuàng)建及使用8.4tkinter常用控件178按鈕組件Button普通按鈕容器控件Frame框架CheckButton選擇按鈕Notebook選項卡RadioButton單選框滑塊scaleListbox列表框樹控件Treeview文本框控件Entry單行文本框菜單Menu標簽LabelText多行文本框下拉列表Combobox本章結(jié)束Python程序設(shè)計第9章Python數(shù)據(jù)庫編程學習目標理解sqlite3開發(fā)流程掌握sqlite3API使用知識目標能夠使用sqlite3編寫簡單的數(shù)據(jù)庫應用能力目標新技術(shù)適應性數(shù)據(jù)安全和隱私保護情感態(tài)度與價值觀了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊
sqlite3常用API目
錄了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 利用主題班會增強班級凝聚力計劃
- 酒店員工薪酬管理總結(jié)
- 紡織行業(yè)生產(chǎn)作業(yè)安全總結(jié)
- 七年級生物下冊 1.1人類的起源和發(fā)展 人教新課標版課件
- 2025年全球及中國智慧康養(yǎng)平臺行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球魚塘凈水器行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球插畫設(shè)計行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球繩狀海藻酸鹽敷料行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國后裝載機卡車行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國翻新SSD和HDD行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 交警安全進校園課件
- (2024年高考真題)2024年普通高等學校招生全國統(tǒng)一考試數(shù)學試卷-新課標Ⅰ卷(含部分解析)
- 潤滑油過濾培訓
- 內(nèi)蒙自治區(qū)烏蘭察布市集寧二中2025屆高考語文全真模擬密押卷含解析
- 浙江省紹興市2023-2024學年高一上學期期末考試物理試題(含答案)
- 《住院患者身體約束的護理》團體標準解讀課件
- 中國急性缺血性卒中診治指南(2023版)
- 學前教育普及普惠質(zhì)量評估幼兒園準備工作詳解
- 第十五章《探究電路》復習課課件滬科版九年級物理
- 2024年中考物理科技創(chuàng)新題型(教師版)
- 唐山市重點中學2024-2025學年全國高考大聯(lián)考信息卷:數(shù)學試題試卷(3)含解析
評論
0/150
提交評論