《Python程序設(shè)計(jì)基礎(chǔ)》-課件 李麗 項(xiàng)目六 函數(shù)和 lambda 表達(dá)式;項(xiàng)目七 Python 面向?qū)ο骭第1頁
《Python程序設(shè)計(jì)基礎(chǔ)》-課件 李麗 項(xiàng)目六 函數(shù)和 lambda 表達(dá)式;項(xiàng)目七 Python 面向?qū)ο骭第2頁
《Python程序設(shè)計(jì)基礎(chǔ)》-課件 李麗 項(xiàng)目六 函數(shù)和 lambda 表達(dá)式;項(xiàng)目七 Python 面向?qū)ο骭第3頁
《Python程序設(shè)計(jì)基礎(chǔ)》-課件 李麗 項(xiàng)目六 函數(shù)和 lambda 表達(dá)式;項(xiàng)目七 Python 面向?qū)ο骭第4頁
《Python程序設(shè)計(jì)基礎(chǔ)》-課件 李麗 項(xiàng)目六 函數(shù)和 lambda 表達(dá)式;項(xiàng)目七 Python 面向?qū)ο骭第5頁
已閱讀5頁,還剩106頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

任務(wù)1認(rèn)識Python函數(shù)01任務(wù)2應(yīng)用Python內(nèi)置函數(shù)02任務(wù)3Python常用參數(shù)的使用03216任務(wù)4變量作用域和global變量的使用04任務(wù)5Python高階函數(shù)和lambda表達(dá)式的使用05任務(wù)6Python函數(shù)修飾器的使用06任務(wù)1

認(rèn)識Python函數(shù)2171.?掌握Python函數(shù)的定義和調(diào)用方法。2.?掌握Python函數(shù)值傳遞和引用傳遞方法。3.?了解Python函數(shù)參數(shù)傳遞機(jī)制。4.?掌握Python?None(空值)的使用方法。5.?掌握return語句的使用方法。任務(wù)目標(biāo)218一、Python函數(shù)的定義和調(diào)用1.?Python函數(shù)的定義Python函數(shù)的定義,就是創(chuàng)建一個(gè)函數(shù),可以理解為創(chuàng)建一個(gè)實(shí)現(xiàn)某種用途的工具。定義函數(shù)需要用def關(guān)鍵字實(shí)現(xiàn),具體的語法格式如下。def函數(shù)名(參數(shù)列表)://實(shí)現(xiàn)特定用途的代碼[return[返回值]]相關(guān)知識219各參數(shù)的含義如下?!窈瘮?shù)名:必須是一個(gè)符合Python語法的標(biāo)識符,不建議使用a、b、c這類簡單的標(biāo)識符作為函數(shù)名,這不利于在開發(fā)中代碼塊的維護(hù)和修改,函數(shù)名最好能夠體現(xiàn)該函數(shù)的功能?!駞?shù)列表:設(shè)置該函數(shù)可以接收多少個(gè)參數(shù),各個(gè)參數(shù)之間用逗號分隔,參數(shù)列表也可以為空?!馵return[返回值]]:整體作為函數(shù)的可選參數(shù),用于設(shè)置該函數(shù)的返回值。也就是說,一個(gè)函數(shù)可以有返回值,也可以沒有返回值,是否需要返回值,應(yīng)根據(jù)實(shí)際情況而定。220在Python中,如果想定義一個(gè)沒有任何功能的空函數(shù),在函數(shù)內(nèi)部使用pass作為占位符,示例如下。defpass_a():pass雖然Python允許定義空函數(shù),但函數(shù)本身沒有實(shí)際意義。另外,函數(shù)中的return語句可以直接返回一個(gè)表達(dá)式的值,例如以下程序。defstr_max(str1,str2):returnstr1ifstr1>str2elsestr22212.?Python函數(shù)的調(diào)用Python函數(shù)的調(diào)用,就是執(zhí)行函數(shù)。如果把創(chuàng)建的函數(shù)理解為一個(gè)具有某種用途的工具,那么調(diào)用函數(shù)就相當(dāng)于使用該工具。函數(shù)調(diào)用的基本語法格式如下。[返回值]=函數(shù)名([形參值])其中,函數(shù)名是指要調(diào)用的函數(shù)的名稱;形參值是指形式上的參數(shù)(簡稱形參)的值,形參的作用是以變量的形式來傳遞當(dāng)前未知的值(后面會對其進(jìn)行詳細(xì)說明)。如果該函數(shù)有返回值,可以通過一個(gè)變量來接收該返回值,也可以不接收。222注意:創(chuàng)建函數(shù)時(shí)有多少個(gè)形參,調(diào)用時(shí)就需要傳入多少個(gè)值,且順序必須和創(chuàng)建函數(shù)時(shí)一致。即便該函數(shù)沒有參數(shù),函數(shù)名后的小括號也不能省略。首先,對于調(diào)用空函數(shù)來說,由于函數(shù)本身并不包含任何有價(jià)值的執(zhí)行代碼,也沒有返回值,所以調(diào)用空函數(shù)不會有任何效果。其次,對于上面的程序中對str_max函數(shù)的調(diào)用,由于當(dāng)初定義該函數(shù)時(shí)為其設(shè)置了兩個(gè)參數(shù),所以這里在調(diào)用該函數(shù)時(shí)就必須傳入兩個(gè)參數(shù)。同時(shí),由于該函數(shù)內(nèi)部還使用了return語句,所以可以使用string_max變量來接收該函數(shù)的返回值。程序執(zhí)行結(jié)果如下。/223二、Python函數(shù)值傳遞和引用傳遞通常情況下,定義函數(shù)時(shí)都會選擇有參數(shù)的函數(shù)形式,函數(shù)參數(shù)的作用是傳遞數(shù)據(jù)給函數(shù),令其對接收的數(shù)據(jù)做出具體的操作處理。在使用函數(shù)時(shí),經(jīng)常會用到形式參數(shù)和實(shí)際參數(shù)(簡稱實(shí)參),兩者都稱為參數(shù),區(qū)別如下。形式參數(shù):在定義函數(shù)時(shí),函數(shù)名后面括號中的參數(shù)就是形式參數(shù),示例如下。defdemo(obj):#定義函數(shù)時(shí),這里的函數(shù)參數(shù)obj就是形式參數(shù)print(obj)224實(shí)際參數(shù):在調(diào)用函數(shù)時(shí),函數(shù)名后面括號中的參數(shù)就是實(shí)際參數(shù),即函數(shù)的調(diào)用者給函數(shù)的參數(shù),示例如下。a="不忘初心"demo(a)#調(diào)用已經(jīng)定義好的demo函數(shù),此時(shí)傳入的函數(shù)參數(shù)a就是實(shí)際參數(shù)簡單而言,定義函數(shù)時(shí)的參數(shù)是形式參數(shù),調(diào)用函數(shù)時(shí)的參數(shù)是實(shí)際參數(shù)。225在Python中,根據(jù)實(shí)際參數(shù)的類型不同,函數(shù)參數(shù)的傳遞方式可分為值傳遞和引用(地址)傳遞兩種。值傳遞適用于實(shí)際參數(shù)類型為不可變類型(如字符串、數(shù)字、元組);引用傳遞適用于實(shí)際參數(shù)類型為可變類型(如列表、字典)。值傳遞和引用傳遞的區(qū)別是,函數(shù)參數(shù)進(jìn)行值傳遞后,形式參數(shù)的值發(fā)生改變,不會影響實(shí)際參數(shù)的值;而函數(shù)參數(shù)進(jìn)行引用傳遞后,改變形式參數(shù)的值,實(shí)際參數(shù)的值也會一同改變。226三、Python函數(shù)參數(shù)傳遞機(jī)制1.?Python函數(shù)參數(shù)的值傳遞機(jī)制在Python中,如果實(shí)際參數(shù)的數(shù)據(jù)類型是不可變對象(如整數(shù)、字符串、元組等),則函數(shù)參數(shù)的傳遞方式是按值傳遞。函數(shù)參數(shù)的值傳遞是指將實(shí)際參數(shù)值的副本(復(fù)制品)傳入函數(shù),由于傳入函數(shù)的是實(shí)際參數(shù)值的復(fù)制品,所以不管在函數(shù)中對這個(gè)復(fù)制品進(jìn)行怎樣的操作,實(shí)際參數(shù)本身不會受到任何影響。227下面的程序演示了函數(shù)參數(shù)進(jìn)行值傳遞的效果。defswap(a,b):#下面的代碼實(shí)現(xiàn)a、b變量的值交換a,b=b,aprint("swap函數(shù)里,a的值是",a,";b的值是",b)a=9b=6swap(a,b)print("交換結(jié)束后,變量a的值是",a,";變量b的值是",b)228程序運(yùn)行結(jié)果如下。swap函數(shù)里,a的值是6;b的值是9交換結(jié)束后,變量a的值是9;變量b的值是6從上面的運(yùn)行結(jié)果來看,在swap函數(shù)中,a和b的值分別是6、9,交換結(jié)束后,a和b的值分別是9、6。從這個(gè)運(yùn)行結(jié)果可以看出,主程序中實(shí)際定義的變量a和b并不是swap函數(shù)中的a和b。正如前面所述,swap函數(shù)中的a和b只是主程序中變量a和b的復(fù)制品。下面通過示意圖來說明上面程序的執(zhí)行過程。229上面的程序定義了a、b兩個(gè)局部變量,這兩個(gè)變量在內(nèi)存中的存儲示意圖如圖所示。當(dāng)程序執(zhí)行swap函數(shù)時(shí),系統(tǒng)進(jìn)入swap函數(shù),并將主程序中的a、b變量作為參數(shù)值傳入swap函數(shù),但傳入swap函數(shù)的只是a、b的副本,而不是a、b本身。230主棧區(qū)中a、b變量存儲示意圖當(dāng)在主程序中調(diào)用swap函數(shù)時(shí),系統(tǒng)分別為主程序和swap函數(shù)分配兩塊棧區(qū),用于保存它們的局部變量。這兩個(gè)棧區(qū)分別為主(程序)棧區(qū)和swap函數(shù)棧區(qū)。將主棧區(qū)中的a、b變量作為參數(shù)值傳入swap函數(shù),實(shí)際上是在swap函數(shù)棧區(qū)中重新產(chǎn)生了兩個(gè)變量a、b,并將主棧區(qū)中a、b變量的值分別賦給swap函數(shù)棧區(qū)中的a、b兩個(gè)變量,即對swap函數(shù)棧區(qū)中的a、b兩個(gè)變量進(jìn)行初始化。此時(shí),系統(tǒng)中存在兩個(gè)a變量、兩個(gè)b變量,只是存在于不同的棧區(qū)中而已。如圖所示為將主棧區(qū)中的變量作為參數(shù)值傳入swap函數(shù)棧區(qū)后的存儲示意圖。231232將主棧區(qū)中的變量作為參數(shù)值傳入swap函數(shù)棧區(qū)后的存儲示意圖程序在swap函數(shù)中交換a、b兩個(gè)變量的值,實(shí)際上是對上圖中swap函數(shù)棧區(qū)的a、b變量進(jìn)行交換。交換結(jié)束后,輸出swap函數(shù)中a、b變量的值。此時(shí)a、b在內(nèi)存中的存儲示意圖如圖所示。233swap函數(shù)中a、b交換后在內(nèi)存中的存儲示意圖2.?Python函數(shù)參數(shù)的引用傳遞機(jī)制如果實(shí)際參數(shù)的數(shù)據(jù)類型是可變對象(如列表、字典),則函數(shù)參數(shù)的傳遞方式將采用引用傳遞。注意:引用傳遞方式的底層實(shí)現(xiàn)采用的依然是值傳遞的方式。下面的程序演示了引用傳遞參數(shù)的效果。defswap(value):#下面的代碼實(shí)現(xiàn)value的a、b兩個(gè)元素的值交換value['a'],value['b']=value['b'],value['a']print("swap函數(shù)里,a元素的值是",value['a'],";b元素的值是",value['b'])234value={'a':6,'b':9}swap(value)print("交換結(jié)束后,a元素的值是",value['a'],";b元素的值是",value['b'])程序運(yùn)行結(jié)果如下。swap函數(shù)里,a元素的值是9;b元素的值是6交換結(jié)束后,a元素的值是9;b元素的值是6235從上面的運(yùn)行結(jié)果來看,在swap函數(shù)中,value字典的a、b兩個(gè)元素的值被交換成功。不僅如此,當(dāng)swap函數(shù)執(zhí)行結(jié)束后,主程序中value字典的a、b兩個(gè)元素的值也被交換了。這很容易造成一種錯(cuò)覺,即在調(diào)用swap函數(shù)時(shí),傳入swap函數(shù)的就是value字典本身,而不是它的復(fù)制品。事實(shí)上并非如此,下面結(jié)合示意圖來說明程序的執(zhí)行過程。236程序開始創(chuàng)建了一個(gè)字典對象,并定義了一個(gè)引用變量value(其實(shí)就是一個(gè)指針)指向字典對象,這意味著此時(shí)內(nèi)存中有兩個(gè)東西:對象本身和指向該對象的引用變量。主程序創(chuàng)建了字典對象后的存儲示意圖如圖所示。237主程序創(chuàng)建了字典對象后的存儲示意圖接下來主程序開始調(diào)用swap函數(shù),在調(diào)用swap函數(shù)時(shí),value變量作為參數(shù)傳入swap函數(shù),這里依然采用值傳遞方式,即把主程序中value變量的值賦給swap函數(shù)中value的形參,從而完成swap函數(shù)中value參數(shù)的初始化。注意:主程序中的value是一個(gè)引用變量(也就是一個(gè)指針),它保存了字典對象的地址值,當(dāng)把value的值賦給swap函數(shù)中value的形參后,讓swap函數(shù)的value參數(shù)也保存這個(gè)地址值,即也會引用同一個(gè)字典對象。下圖顯示了value字典傳入swap函數(shù)后的存儲示意圖。238從上圖可以看出,這種參數(shù)傳遞方式是值傳遞方式,系統(tǒng)復(fù)制了value的副本傳入swap函數(shù)。由于value只是一個(gè)引用變量,所以系統(tǒng)復(fù)制的是value變量,并未復(fù)制字典本身。239value字典傳入swap函數(shù)后的存儲示意圖當(dāng)程序在swap函數(shù)中操作value參數(shù)時(shí),由于value只是一個(gè)引用變量,故實(shí)際操作的還是字典對象。此時(shí),不管是操作主程序中的value變量,還是操作swap函數(shù)中的value參數(shù),其實(shí)操作的都是它們共同引用的字典對象。因此,當(dāng)在swap函數(shù)中交換value參數(shù)所引用字典對象的a、b兩個(gè)元素的值時(shí),可以看到在主程序中value變量所引用字典對象的a、b兩個(gè)元素的值也被交換了。為了更好地證明主程序中的value和swap函數(shù)中的value是兩個(gè)變量,在swap函數(shù)的最后一行增加如下代碼。#把value直接賦值為None,讓它不再指向任何對象value=None240運(yùn)行上面的程序,結(jié)果是swap函數(shù)中的value變量不再指向任何對象,程序其他地方?jīng)]有任何改變。主程序調(diào)用swap函數(shù)后,再次訪問value變量的a、b兩個(gè)元素,依然可以輸出9、6??梢姡鞒绦蛑械膙alue變量沒有受到任何影響。將swap函數(shù)中的value賦值為None后的存儲示意圖如圖所示。241將swap函數(shù)中的value賦值為None后的存儲示意圖從上圖可以看出,把swap函數(shù)中的value賦值為None后,在swap函數(shù)中失去了對字典對象的引用,不可再訪問該字典對象,但主程序中的value變量不受任何影響,依然可以引用該字典對象,因此依然可以輸出字典對象的a、b元素值。通過上述的介紹可以得出如下兩個(gè)結(jié)論。(1)不管什么類型的參數(shù),在Python函數(shù)中對參數(shù)直接使用等號賦值是沒用的,直接使用等號賦值并不能改變參數(shù)。(2)如需讓函數(shù)修改某些數(shù)據(jù),可以把這些數(shù)據(jù)包裝成列表、字典等可變對象,然后把列表、字典等可變對象作為參數(shù)傳入函數(shù),在函數(shù)中通過列表、字典的方法修改它們,從而成功地改變這些數(shù)據(jù)。242四、PythonNone(空值)的使用在Python中,有一個(gè)特殊的常量None(N必須大寫),和False不同,它不表示0,也不表示空字符串,而表示沒有值,也就是空值。這里的空值并不代表空對象,即None和[]、""不同,例如以下程序。>>>Noneis[]False>>>Noneis""False243None有自己的數(shù)據(jù)類型,可以在交互模式中使用type函數(shù)查看它的數(shù)據(jù)類型,執(zhí)行代碼如下。>>>type(None)<class'NoneType'>可以看到,它屬于NoneType類型。注意:None是NoneType類型的唯一值(其他編程語言可能稱這個(gè)值為null、nil或unde?ned),也就是說,不能再創(chuàng)建其他NoneType類型的變量,但是可以將None賦給任何變量。如果希望變量中存儲的內(nèi)容不與任何其他值混淆,就可以使用None。除此之外,None常用于assert、判斷函數(shù)有無返回值。244五、return語句的使用方法目前,我們創(chuàng)建的函數(shù)都只是對傳入的數(shù)據(jù)進(jìn)行了處理,處理完了就結(jié)束,但實(shí)際上,在某些場景中,還需要函數(shù)將處理的結(jié)果反饋回來,前面所述的函數(shù)基本語法格式也有所提及。在Python中,用def語句創(chuàng)建函數(shù)時(shí),可以用return語句指定應(yīng)該返回的值,該返回值可以是任意類型。注意:return語句在同一函數(shù)中可以出現(xiàn)多次,但只要有一個(gè)得到執(zhí)行,就會直接結(jié)束函數(shù)的執(zhí)行。在函數(shù)中,使用return語句的語法格式如下。return[返回值]其中,返回值參數(shù)可以指定,也可以省略不寫(將返回空值None)。245通過return語句指定返回值后,在調(diào)用函數(shù)時(shí),既可以將該函數(shù)的返回值賦給一個(gè)變量,用變量保存函數(shù)的返回值,又可以將函數(shù)的返回值作為某個(gè)函數(shù)的實(shí)際參數(shù)??梢钥吹?,函數(shù)中可以同時(shí)包含多個(gè)return語句,但最終真正執(zhí)行的只有一個(gè),一旦執(zhí)行了一個(gè)return語句,就會立即結(jié)束函數(shù)的執(zhí)行。在以上示例中函數(shù)都通過return語句返回了指定值,但都只返回了一個(gè)值,事實(shí)上,Python能通過return語句返回多個(gè)值,Python函數(shù)可以通過返回列表或元組的方式將需要返回的多個(gè)值保存到序列中,間接達(dá)到返回多個(gè)值的目的。246任務(wù)2

應(yīng)用Python內(nèi)置函數(shù)2471.?掌握Python內(nèi)置函數(shù)的概念與使用方法。2.?能使用Python內(nèi)置函數(shù)創(chuàng)建和修改列表。任務(wù)目標(biāo)248Python內(nèi)置函數(shù)在Python中占有非常重要的地位,熟練使用Python內(nèi)置函數(shù)對學(xué)習(xí)和使用Python非常重要。Python官方文檔給出的Python內(nèi)置函數(shù)見下表,常用的有zip函數(shù)、reversed函數(shù)和sorted函數(shù)等。相關(guān)知識249250Python內(nèi)置函數(shù)251一、zip函數(shù)及用法zip函數(shù)是Python內(nèi)置函數(shù)之一,它可以將多個(gè)序列,如列表、元組、字典、集合、字符串以及range區(qū)間構(gòu)成的列表“壓縮”成一個(gè)zip對象。所謂“壓縮”,其實(shí)就是將這些序列中對應(yīng)位置的元素重新組合,生成一個(gè)個(gè)新的元組。zip函數(shù)的語法格式如下。zip(iterable,…)其中,“iterable,…”表示多個(gè)列表、元組、字典、集合、字符串,甚至可以是range區(qū)間。252zip函數(shù)的使用方法如下。list1=['aa','bb','cc']tup1=(11,22,33)print([xforxinzip(list1,tup1)])程序運(yùn)行結(jié)果如下。[('aa',11),('bb',22),('cc',33)]注意:在使用zip函數(shù)“壓縮”多個(gè)序列時(shí),它會分別取各序列中第1個(gè)元素、第2個(gè)元素、…、第n個(gè)元素,各自組成新的元組。當(dāng)多個(gè)序列中元素個(gè)數(shù)不一致時(shí),會以最短的序列為準(zhǔn)進(jìn)行壓縮。253另外,對于zip函數(shù)返回的zip對象,既可以像上面的程序那樣,通過遍歷提取其存儲的元組,又可以像下面的程序這樣,通過調(diào)用list函數(shù)將zip對象強(qiáng)制轉(zhuǎn)換成列表。list1=['aa','bb','cc']tup1=(11,22,33)print(list(zip(list1,tup1)))程序運(yùn)行結(jié)果如下。[('aa',11),('bb',22),('cc',33)]254二、reversed函數(shù)及用法reversed函數(shù)是Python內(nèi)置函數(shù)之一,其功能是對于給定的序列,包括列表、元組、字符串以及range區(qū)間,可以返回一個(gè)逆序序列的迭代器(用于遍歷該逆序序列)。reversed函數(shù)的語法格式如下。reversed(seq)其中,seq可以是列表、元組、字符串以及range生成的區(qū)間列表。255三、sorted函數(shù)及用法sorted函數(shù)作為Python內(nèi)置函數(shù)之一,其功能是對序列(列表、元組、字典、集合、字符串等)進(jìn)行排序。sorted函數(shù)的基本語法格式如下。list=sorted(iterable,key=None,reverse=False)其中,iterable表示指定的序列,key參數(shù)可以自定義排序規(guī)則,reverse參數(shù)指定以升序(False,默認(rèn))還是降序(True)進(jìn)行排序。sorted函數(shù)會返回一個(gè)排好序的列表。任務(wù)3

Python常用參數(shù)的使用2561.?了解位置參數(shù)的基本概念。2.?了解缺省參數(shù)的基本概念。3.?了解可變參數(shù)的基本概念。4.?了解關(guān)鍵字參數(shù)的基本概念。5.?了解命名關(guān)鍵字參數(shù)的基本概念。6.?掌握各類參數(shù)的使用方法并能正確使用。任務(wù)目標(biāo)257一、位置參數(shù)位置參數(shù),有時(shí)也被稱為必備參數(shù),是指在調(diào)用函數(shù)時(shí)必須按照正確的順序?qū)?shí)際參數(shù)傳遞給函數(shù)。換句話說,調(diào)用函數(shù)時(shí)傳入的實(shí)際參數(shù)數(shù)量和位置必須與定義函數(shù)時(shí)所期望的一致。在調(diào)用函數(shù)時(shí),實(shí)際參數(shù)的數(shù)量和形式參數(shù)的數(shù)量必須匹配。這意味著在函數(shù)調(diào)用過程中,傳遞的實(shí)際參數(shù)數(shù)量必須與函數(shù)定義中指定的形式參數(shù)數(shù)量相同,否則Python解釋器將引發(fā)TypeError異常,并提示缺少必要的位置參數(shù)。無論傳遞的實(shí)際參數(shù)多了還是少了,都會導(dǎo)致函數(shù)調(diào)用失敗。相關(guān)知識258259二、缺省參數(shù)定義函數(shù)時(shí),可以給某個(gè)參數(shù)指定一個(gè)默認(rèn)值,具有默認(rèn)值的參數(shù)叫作缺省參數(shù),又叫默認(rèn)參數(shù)。調(diào)用函數(shù)時(shí),如果沒有傳入缺省參數(shù)的值,則在函數(shù)內(nèi)部使用定義時(shí)指定參數(shù)默認(rèn)值。注意:必須保證帶有默認(rèn)值的缺省參數(shù)在參數(shù)列表末尾。在調(diào)用函數(shù)時(shí),如果有多個(gè)缺省參數(shù),則需要指定參數(shù)名。Python定義帶有缺省參數(shù)的函數(shù)的語法格式如下。def函數(shù)名(...,形參名,形參名=默認(rèn)值):代碼塊260三、可變參數(shù)Python的可變參數(shù)有兩種,一種是列表類型,一種是字典類型。如以下示例所示,number接收的是一個(gè)常規(guī)參數(shù),*args接收的是一個(gè)元組,**kwargs接收的是一個(gè)字典。def函數(shù)名(...,number,*args,**kwargs):代碼塊可以理解為,在傳遞參數(shù)的過程中,傳入的數(shù)據(jù)列表在常規(guī)參數(shù)接收完畢之后,剩下的數(shù)據(jù)列表會由形參*args封裝成一個(gè)元組進(jìn)行接收,字典數(shù)據(jù)列表則全由**kwargs封裝成字典進(jìn)行接收。261四、關(guān)鍵字參數(shù)一般情況下,使用函數(shù)時(shí)采用的參數(shù)都是位置參數(shù),即傳入函數(shù)的實(shí)際參數(shù)必須與形式參數(shù)的數(shù)量和位置一一對應(yīng)。而關(guān)鍵字參數(shù)則可以避免位置參數(shù)需要牢記參數(shù)位置的麻煩,使函數(shù)的調(diào)用和參數(shù)傳遞更加靈活、方便。關(guān)鍵字參數(shù)是指使用形式參數(shù)的名稱來確定輸入的參數(shù)值。通過此方式指定函數(shù)的實(shí)際參數(shù)時(shí),不再需要實(shí)際參數(shù)與形式參數(shù)的位置完全一致,只要確保實(shí)際參數(shù)的名稱正確即可。因此,函數(shù)的參數(shù)名應(yīng)具有更好的語義,通過參數(shù)名可以立刻明確傳入函數(shù)的各個(gè)參數(shù)的含義。262五、命名關(guān)鍵字參數(shù)如果需要限制關(guān)鍵字參數(shù)的名稱,可以用命名關(guān)鍵字參數(shù),如以下示例所示,只接收name和age作為關(guān)鍵字參數(shù),并用“*”分隔。defperson(...,*,name,age):代碼塊注意:在傳遞參數(shù)時(shí),務(wù)必按照函數(shù)定義時(shí)所命名的關(guān)鍵字參數(shù)進(jìn)行傳遞,否則在調(diào)用函數(shù)時(shí)會引發(fā)錯(cuò)誤。如果函數(shù)定義中已經(jīng)存在一個(gè)可變參數(shù)(帶有“*”的參數(shù)),后續(xù)命名關(guān)鍵字參數(shù)時(shí)無須再添加額外的“*”作為分隔符。而在給命名關(guān)鍵字參數(shù)傳遞值時(shí),必須顯式地使用參數(shù)名來傳遞值,否則將引發(fā)錯(cuò)誤。這些注意事項(xiàng)對于確保函數(shù)調(diào)用的正確性非常重要。命名關(guān)鍵字參數(shù)也可以有默認(rèn)值,從而簡化調(diào)用,示例如下。defperson(*,name,age=20):print(name,age)person(name='小紅')如上所示,由于命名關(guān)鍵字參數(shù)age具有默認(rèn)值,在調(diào)用函數(shù)時(shí)可不傳入age參數(shù)。263任務(wù)4

變量作用域和global變量的使用2641.?熟悉變量作用域的概念。2.?能區(qū)分局部變量與全局變量。3.?能正確使用局部變量和全局變量。任務(wù)目標(biāo)265變量作用域是指變量的有效范圍,即變量可以在哪個(gè)范圍內(nèi)使用。有些變量可以在整段代碼的任意位置使用,有些變量只能在函數(shù)內(nèi)部使用,還有些變量只能在for循環(huán)內(nèi)部使用。變量作用域由變量的定義位置決定,在不同位置定義的變量,它們的作用域是不一樣的。變量按作用域劃分,可以分為局部變量和全局變量兩種。相關(guān)知識266267一、局部變量局部變量是指在函數(shù)內(nèi)部定義的變量,它的作用域僅限于函數(shù)內(nèi)部,在函數(shù)外部就不能被使用了。當(dāng)函數(shù)被執(zhí)行時(shí),Python會為局部變量分配一個(gè)臨時(shí)的存儲空間,所有在函數(shù)內(nèi)部定義的變量都會存儲在這個(gè)空間中。函數(shù)執(zhí)行完畢,這個(gè)臨時(shí)存儲空間隨即被釋放并回收,該空間中存儲的變量自然也就無法再被使用。268二、全局變量除了在函數(shù)內(nèi)部定義變量,Python還允許在所有函數(shù)的外部定義變量,這樣的變量稱為全局變量。和局部變量不同,全局變量的默認(rèn)作用域是整個(gè)程序,即全局變量既可以在各個(gè)函數(shù)內(nèi)部使用,又可以在各個(gè)函數(shù)外部使用。269定義全局變量的方式有兩種:一種是在函數(shù)體外定義的變量,這類變量一定是全局變量;另一種是在函數(shù)體內(nèi)定義的全局變量。這里涉及全局變量的用法,即使用global關(guān)鍵字對變量進(jìn)行修飾后,該變量就變?yōu)槿肿兞?,具體語法格式如下。def函數(shù)名(參數(shù)列表):global變量名注意:在使用global關(guān)鍵字修飾變量名時(shí),不能直接給變量賦初值,否則會引發(fā)語法錯(cuò)誤。任務(wù)5

Python高階函數(shù)和lambda表達(dá)式的使用2701.?熟悉Python高階函數(shù)的概念。2.?掌握Python中常用高階函數(shù)的使用方法。3.?掌握lambda表達(dá)式的使用方法。4.?能正確使用Python中常用的高階函數(shù)和lambda表達(dá)式。任務(wù)目標(biāo)271一、高階函數(shù)的概念函數(shù)只要滿足下面的任意一個(gè)條件就是高階函數(shù)。(1)將一個(gè)函數(shù)的函數(shù)名作為參數(shù)傳給另一個(gè)函數(shù)。(2)一個(gè)函數(shù)的返回值為另外一個(gè)函數(shù)(若返回為函數(shù)本身,則為遞歸)。相關(guān)知識272273二、Python內(nèi)置的高階函數(shù)1.?map函數(shù)map函數(shù)接收的是兩個(gè)參數(shù),一個(gè)是函數(shù)名,另一個(gè)是序列,其功能是將序列中的數(shù)值作為函數(shù)的參數(shù)依次傳入函數(shù)中執(zhí)行,然后再返回到列表中。返回值是一個(gè)迭代器對象。高階函數(shù)map一般和匿名函數(shù)lambda聯(lián)合使用,能夠起到明顯的簡化代碼的效果。對于迭代器有三種訪問方式:next函數(shù)、for循環(huán)、轉(zhuǎn)變成列表。2742.?filter函數(shù)?lter函數(shù)也是接收一個(gè)函數(shù)和一個(gè)序列的高階函數(shù),其主要功能是過濾,其返回值也是迭代器對象。例如以下程序。names=["XIAOlan","xiaohong","xiaofang"]print(list(filter(lambdax:x.islower(),names)))程序運(yùn)行結(jié)果如下。['xiaohong','xiaofang']從上述代碼可以看出,高階函數(shù)?lter只選擇全為小寫的字符串,從而起到過濾作用。275三、lambda表達(dá)式Python中提供了特色的函數(shù)表達(dá)方式,即lambda表達(dá)式。lambda表達(dá)式又稱匿名函數(shù),常用來表示內(nèi)部僅包含一行表達(dá)式的函數(shù)。如果一個(gè)函數(shù)的函數(shù)體僅有一行表達(dá)式,則該函數(shù)就可以用lambda表達(dá)式來代替。lambda表達(dá)式的語法格式如下。name=lambda[list]:表達(dá)式276其中,定義lambda表達(dá)式必須使用lambda關(guān)鍵字;[list]作為可選參數(shù),等同于定義函數(shù)時(shí)指定的參數(shù)列表;name相當(dāng)于定義函數(shù)時(shí)的函數(shù)名稱。該語法格式轉(zhuǎn)換成普通函數(shù)的形式如下。defname([list]):return表達(dá)式lambda表達(dá)式是簡單函數(shù)的簡寫版本。相比函數(shù),lambda表達(dá)式具有以下兩個(gè)優(yōu)勢。(1)對于單行函數(shù),使用lambda表達(dá)式可以省去定義函數(shù)的過程,使代碼更加簡潔。(2)對于不需要多次復(fù)用的函數(shù),lambda表達(dá)式可以在用完之后立即釋放,提高程序執(zhí)行能力。任務(wù)6

Python函數(shù)修飾器的使用2771.?理解Python函數(shù)修飾器的概念。2.?掌握Python函數(shù)修飾器的使用方法。3.?能正確使用Python函數(shù)修飾器。任務(wù)目標(biāo)278Python函數(shù)修飾器使用下列形式修飾一個(gè)函數(shù)。@修飾器1def函數(shù)1:函數(shù)體上述定義也相當(dāng)于:函數(shù)1=修飾器1(函數(shù)1)修飾器實(shí)際上就是一個(gè)函數(shù),一個(gè)用來包裝函數(shù)的函數(shù)。修飾器返回一個(gè)修改之后的函數(shù)對象,且具有相同的函數(shù)簽名。相關(guān)知識279280修飾器是一種設(shè)計(jì)模式,其作用是為已經(jīng)存在的函數(shù)添加額外的功能,如插入日志以及進(jìn)行性能測試、事務(wù)處理等。一個(gè)函數(shù)可以使用多個(gè)修飾器,結(jié)果與修飾器的位置及順序有關(guān),例如以下程序。@foo@spamdefbar():pass等同于以下程序。281defbar():passbar=foo(spam(bar))Python中包含內(nèi)置的修飾器,如staticmethod、classmethod和property等。用戶也可以自定義修飾器。任務(wù)1認(rèn)識類對象和實(shí)例對象01任務(wù)2認(rèn)識屬性02任務(wù)3認(rèn)識方法03282任務(wù)4認(rèn)識繼承04任務(wù)5認(rèn)識可迭代對象——迭代器和生成器05任務(wù)1

認(rèn)識類對象和實(shí)例對象2831.?了解對象的定義。2.?了解面向?qū)ο蟮奶匦浴?.?了解類和實(shí)例的定義及使用。4.?能正確使用類對象和實(shí)例對象。任務(wù)目標(biāo)284一、對象的定義所謂對象,從概念層面來看,是對某種事物的抽象表示(包含功能和屬性)。抽象可以分為兩個(gè)方面:數(shù)據(jù)抽象和過程抽象。數(shù)據(jù)抽象定義了對象的屬性,而過程抽象定義了對象的操作。相關(guān)知識285在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,強(qiáng)調(diào)將數(shù)據(jù)(屬性)和操作(服務(wù))融合成一個(gè)不可分割的單元,即對象。外部使用對象時(shí),只需知道它的功能,而不必了解內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。在規(guī)范層面,對象是一系列可被其他對象使用的公共接口,實(shí)現(xiàn)了對象間的交互。從編程語言的角度,對象將數(shù)據(jù)和代碼(程序)封裝在一起,實(shí)現(xiàn)了信息的隱藏。通過類創(chuàng)建的實(shí)例被稱為對象。類和對象的關(guān)系類似汽車的設(shè)計(jì)圖紙與實(shí)際汽車的關(guān)系。設(shè)計(jì)圖紙(類)本身并不具備可用性,只有通過圖紙制造出來的汽車(對象)才能被使用。這種模型能夠幫助開發(fā)者更好地組織和管理代碼,實(shí)現(xiàn)代碼的重用和擴(kuò)展。286二、面向?qū)ο蟮奶匦?.?封裝封裝是面向?qū)ο蟮闹饕匦?,是指把客觀事物抽象并封裝成對象,即將數(shù)據(jù)成員、屬性、方法和事件等集合在一個(gè)整體內(nèi)。通過訪問控制還可以隱藏內(nèi)部成員,但只允許可信的對象訪問或操作部分?jǐn)?shù)據(jù)或方法。封裝保證了對象的獨(dú)立性,可以防止外部程序破壞對象的內(nèi)部數(shù)據(jù),同時(shí)便于對程序維護(hù)和修改。2872.?繼承繼承是面向?qū)ο蟮某绦蛟O(shè)計(jì)中代碼重用的主要方法。繼承允許使用現(xiàn)有類的功能,并在無須重新改寫原來類的情況下對這些功能進(jìn)行擴(kuò)展。繼承可以避免代碼復(fù)制和相關(guān)的代碼維護(hù)等問題。2883.?多態(tài)性派生類繼承了基類的所有非私有數(shù)據(jù)和行為,同時(shí)能夠定義自己的新數(shù)據(jù)和行為。因此,派生類擁有兩個(gè)有效的類型:自身的類型以及它所繼承的基類的類型。這種特性使得一個(gè)對象可以展現(xiàn)出多種不同類型的能力,這被稱為多態(tài)性。通過繼承,派生類能夠在已有基礎(chǔ)之上,擴(kuò)展和定制基類,同時(shí)可以添加新的屬性和方法。多態(tài)性則使得可以在不同的上下文中使用相同的對象,從而實(shí)現(xiàn)更靈活和通用的代碼設(shè)計(jì)。多態(tài)性能夠在運(yùn)行時(shí)自動(dòng)地選擇適當(dāng)?shù)姆椒ɑ蛐袨?,從而提高代碼的可擴(kuò)展性和可維護(hù)性。289三、類的定義類使用關(guān)鍵字class聲明。類的聲明格式如下。class類名:類體其中,類名為有效的標(biāo)識符,通常由多個(gè)單詞組成,每個(gè)單詞的首字母大寫,其余字母小寫,這有助于提高代碼的可讀性和可維護(hù)性。類體是由縮進(jìn)的一系列語句組成的塊。290在類體內(nèi)部定義的元素被視為類的成員。類的主要成員可以分為兩種類型:描述狀態(tài)的數(shù)據(jù)成員(也稱為屬性)和描述操作的函數(shù)成員(也稱為方法)。值得注意的是,Python中的class語句實(shí)際上是一個(gè)復(fù)合語句,它不僅定義了一個(gè)類,更是在Python解釋器執(zhí)行時(shí)創(chuàng)建了一個(gè)類對象。這個(gè)類對象可以看作一個(gè)模板,根據(jù)這個(gè)模板可以創(chuàng)建出許多實(shí)例,每個(gè)實(shí)例都具有類定義中所描述的屬性和方法。這種面向?qū)ο蟮乃枷霝榇a的設(shè)計(jì)和組織提供了更加靈活和可復(fù)用的方式。291四、實(shí)例的定義類是抽象的,如果要使用類定義的功能,就必須實(shí)例化類,即創(chuàng)建類的對象。在創(chuàng)建實(shí)例對象后,可以使用“.”運(yùn)算符來調(diào)用其成員。注意:創(chuàng)建類的對象、創(chuàng)建類的實(shí)例、實(shí)例化類等說法是等價(jià)的,都是以類為模板生成了一個(gè)對象。實(shí)例對象的調(diào)用格式如下。anObject=類名(參數(shù)列表)anObject.對象函數(shù)或anObject.對象屬性292Python創(chuàng)建對象的方法無須使用關(guān)鍵字new,而是直接像調(diào)用函數(shù)一樣調(diào)用類對象并傳遞參數(shù),因此,類對象是可調(diào)用對象。在Python內(nèi)置函數(shù)中,bool、int、str、list、dict、set等均為可調(diào)用內(nèi)置類對象,在有的場合也稱之為函數(shù),如使用str函數(shù)把數(shù)值“123”轉(zhuǎn)換成字符串的形式“str(123)”。293五、類對象和實(shí)例對象的使用訪問類的成員(屬性和方法)主要有兩種方式:使用類對象和使用實(shí)例對象。1.?使用類對象訪問成員當(dāng)使用類對象訪問成員時(shí),可以直接通過類名訪問類的屬性和方法。這樣的訪問方式適用于類的靜態(tài)屬性和靜態(tài)方法,它們不依賴于實(shí)例對象的創(chuàng)建。這種方式更適合處理類級別的數(shù)據(jù)或方法。2942.?使用實(shí)例對象訪問成員當(dāng)創(chuàng)建類的實(shí)例對象后,可以使用實(shí)例對象訪問實(shí)例屬性和實(shí)例方法。實(shí)例對象可以擁有自己的屬性值,同時(shí)可以訪問類的屬性和方法。這種方式更適合處理實(shí)例特定的數(shù)據(jù)和方法。295任務(wù)2

認(rèn)識屬性2961.?熟悉實(shí)例屬性和類屬性的概念,并能正確區(qū)分。2.?了解私有屬性和公有屬性的區(qū)別。3.?了解@property修飾器的作用。4.?能正確使用類屬性和實(shí)例屬性。任務(wù)目標(biāo)297在一個(gè)類中,數(shù)據(jù)成員是指在類定義內(nèi)部聲明的成員變量,也稱為域。這些成員變量用來存儲描述類特征的值,即屬性。屬性可以通過該類中定義的方法進(jìn)行訪問,同時(shí)可以通過類對象或?qū)嵗龑ο筮M(jìn)行訪問。屬性實(shí)際上就是在類中的變量,而在Python中,變量不需要預(yù)先聲明,可以直接使用。建議在類定義的開始位置初始化類對象的屬性,或者在類的構(gòu)造函數(shù)(通常是__init__()方法)中初始化實(shí)例對象的屬性。這樣可以確保在使用類或?qū)嵗龝r(shí),屬性已經(jīng)有了初始值,避免在使用過程中出現(xiàn)調(diào)用屬性值錯(cuò)誤等問題。相關(guān)知識298299一、實(shí)例屬性通過“self.變量名”定義的屬性稱為實(shí)例屬性,也稱為實(shí)例變量。類的每個(gè)實(shí)例都包含了該類的實(shí)例變量的一個(gè)單獨(dú)副本,實(shí)例變量屬于特定的實(shí)例。實(shí)例變量在類的內(nèi)部通過self訪問,在類的外部通過對象實(shí)例訪問。實(shí)例屬性一般在__init__()方法中通過如下形式初始化。__init__()為類的初始化函數(shù),用于定義初始化程序或變量。self.實(shí)例變量名=初始值在其他實(shí)例函數(shù)中通過self訪問,具體如下。self.實(shí)例變量名=值

#寫入self.實(shí)例變量名

#讀取或者在創(chuàng)建實(shí)例后通過實(shí)例訪問,具體如下。obj1=類名()

#創(chuàng)建實(shí)例obj1.實(shí)例變量名=值

#寫入obj1.實(shí)例變量名

#讀取300301二、類屬性在Python中,開發(fā)者可以聲明屬于類對象本身的變量,即類屬性,也稱為類變量或靜態(tài)屬性。與實(shí)例屬性不同,類屬性屬于整個(gè)類,而不是特定實(shí)例的一部分,這意味著所有從該類創(chuàng)建的實(shí)例共享同一個(gè)屬性副本。無論創(chuàng)建了多少個(gè)實(shí)例,這種屬性的值對于該類的所有實(shí)例都是相同的。這種在類級別定義的屬性通常用于存儲與整個(gè)類相關(guān)的常量、配置信息或者共享數(shù)據(jù)。通過在類定義內(nèi)部直接聲明,可以在所有實(shí)例中方便地訪問和使用這些屬性,而不必為每個(gè)實(shí)例分別定義相同的值。這樣一來,類對象屬性提供了一種有效的方式來管理和維護(hù)類級別的數(shù)據(jù)。類屬性一般在類體中通過如下形式初始化。類變量名=初始值在其定義的方法中或外部代碼中通過類名訪問,具體如下。類名.類變量名=值

#寫入類名.類變量名

#讀取注意:類屬性如果通過“obj.屬性名”來訪問,則屬于該類的實(shí)例屬性。雖然類屬性可以使用實(shí)例來訪問,但容易造成困惑,所以建議用戶不要這樣使用,而是使用標(biāo)準(zhǔn)的訪問方式“類名.類變量名”。302303三、私有屬性和公有屬性Python類的成員沒有訪問控制限制,這與其他面向?qū)ο蟪绦蛟O(shè)計(jì)語言不同。Python通常約定以兩個(gè)下畫線開頭,但是不以兩個(gè)下畫線結(jié)束的屬性是私有的,其他為公有的。盡管Python并沒有嚴(yán)格的訪問控制機(jī)制,但是約定是很重要的,在編寫代碼時(shí)盡量遵循這些約定,以便提高代碼的可讀性和可維護(hù)性。注意:不能直接訪問私有屬性,但可以在方法中訪問。304四、@property修飾器面向?qū)ο缶幊痰姆庋b性原則強(qiáng)調(diào)不直接訪問類中的數(shù)據(jù)成員,在Python中可以通過定義私有屬性來實(shí)現(xiàn),并且可以編寫相應(yīng)的用于訪問這些私有屬性的函數(shù),用@property修飾器修飾這些函數(shù)。這種方式允許程序?qū)⑦@些函數(shù)當(dāng)作屬性來訪問,從而提供了更加友好和靈活的訪問方式。@property修飾器的默認(rèn)行為是提供只讀屬性,這意味著開發(fā)者可以通過這些訪問器函數(shù)讀取屬性的值,但不能直接對屬性進(jìn)行修改。如果有需要,還可以使用對應(yīng)的getter、setter和deleter修飾器實(shí)現(xiàn)其他類型的訪問器函數(shù)。通過這些修飾器,可以更精細(xì)地控制屬性的讀取、修改和刪除操作,同時(shí)能在屬性被訪問或修改時(shí)執(zhí)行一些額外的操作,以實(shí)現(xiàn)更豐富的數(shù)據(jù)管理和封裝。305任務(wù)3

認(rèn)識方法3061.?了解方法的概念。2.?熟悉常用的方法并能靈活運(yùn)用。3.?了解方法的重載。4.?能正確定義和使用方法。任務(wù)目標(biāo)307一、實(shí)例方法一般情況下,類方法的第一個(gè)參數(shù)一般為self,這種方法稱為實(shí)例方法。實(shí)例方法對類的某個(gè)給定的實(shí)例進(jìn)行操作,可以通過self顯式地訪問該實(shí)例。實(shí)例方法的聲明格式如下。def方法名(self,[形參列表]):函數(shù)體相關(guān)知識308實(shí)例方法的調(diào)用格式如下。對象.方法名([實(shí)參列表])雖然類方法的第一個(gè)參數(shù)為self,但調(diào)用時(shí)用戶不需要也不能給該參數(shù)傳遞值。事實(shí)上,Python會自動(dòng)把實(shí)例傳遞給該參數(shù)。注意:Python中的self等價(jià)于C++中的self指針和Java、C#中的this關(guān)鍵字。雖然沒有限制第一個(gè)參數(shù)名必須為self,但建議遵循慣例,這樣便于閱讀和理解,且集成開發(fā)環(huán)境也會提供相應(yīng)的支持。309310二、靜態(tài)方法Python允許聲明與類的實(shí)例無關(guān)的方法,即靜態(tài)方法。靜態(tài)方法不對特定實(shí)例進(jìn)行操作,在靜態(tài)方法中訪問實(shí)例會導(dǎo)致錯(cuò)誤。靜態(tài)方法通過修飾器@staticmethod定義,其聲明格式如下。@staticmethoddef靜態(tài)方法名([形參列表]):函數(shù)體靜態(tài)方法一般通過類名訪問,也可以通過實(shí)例調(diào)用。其調(diào)用格式如下。類名.靜態(tài)方法名([實(shí)參列表])311三、類方法在Python中可以聲明屬于類本身的方法,即類方法。不同于普通的實(shí)例方法,類方法不會對特定的實(shí)例進(jìn)行操作。在類方法中嘗試訪問對象實(shí)例會導(dǎo)致錯(cuò)誤。為了定義類方法,需要使用修飾器@classmethod,并將第一個(gè)形參設(shè)置為類對象本身,通常命名為cls。類方法的聲明格式如下。@classmethoddef類方法名(cls,[形參列表]):函數(shù)體類方法一般通過類名訪問,也可以通過實(shí)例調(diào)用。312其調(diào)用格式如下。類名.類方法名([實(shí)參列表])注意:盡管類方法的第一個(gè)參數(shù)被命名為cls,但在調(diào)用時(shí),用戶不需要也不能給該參數(shù)傳遞值。Python會自動(dòng)將類傳遞給這個(gè)參數(shù)。類和實(shí)例不同。在Python中,類本身也被視為對象。當(dāng)調(diào)用子類繼承自父類的類方法時(shí),傳遞給cls的是子類對象,而不是父類對象。313四、__new__()方法和__init__()方法在Python的類體中,還可以定義一些特殊的方法,如__new__()方法和__init__()方法。__new__()方法是一個(gè)類方法,在創(chuàng)建對象時(shí)被調(diào)用,它返回當(dāng)前對象的一個(gè)實(shí)例。通常情況下,不需要重載這個(gè)方法,因?yàn)镻ython會自動(dòng)處理對象的創(chuàng)建過程。__init__()方法即構(gòu)造函數(shù)(構(gòu)造方法),用于在對象創(chuàng)建完成后進(jìn)行初始化工作。該方法在對象被創(chuàng)建后立即調(diào)用,它負(fù)責(zé)初始化當(dāng)前對象的實(shí)例屬性等。該方法沒有返回值。314五、__del__()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論