




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8章模塊Python程序設(shè)計第9章模塊當(dāng)軟件項目越來越大,軟件越來越復(fù)雜時,若是由團隊來開發(fā),就不能把所有程序代碼都放在單一源文件里,而需要透過某種規(guī)則與機制,分散到許多文件中,這時,自然會產(chǎn)生許多需求,借以管理軟件程序代碼、劃分權(quán)責(zé)、便于重復(fù)使用。實際上,每個程序語言都有一套機制來管理程序,諸如函數(shù)庫、程序庫、模塊、包、類庫、軟件開發(fā)框架等等,目的就是程序代碼重復(fù)使用。第9章模塊在Python中,這樣的機制叫模塊(module)與包(package,又稱套件),模塊被用來組織程序的架構(gòu)。目前,各種與包相關(guān)的文件、工具、標(biāo)準(zhǔn)制定,由Python包委員會(PyPA)團體負(fù)責(zé),包括Python包使用者手冊等,有興趣深入了解的讀者,可以瀏覽PyPA的網(wǎng)站。第9章模塊模塊機制將程序代碼依照功能分離,分別放在不同的模塊文件里,避免名稱沖突,但這還不夠,因為之前介紹的模塊,其中的名稱所指向的對象都是函數(shù)、類、整數(shù)、列表等,而有時情況更為復(fù)雜,需要擁有模塊嵌套機制,這種能夠“含有子模塊的模塊”就是包。與過去不同,現(xiàn)在學(xué)習(xí)程序設(shè)計時,通常需要集中大部分精力在程序庫上,熟悉其框架與用法,根據(jù)你想要開發(fā)哪個領(lǐng)域的程序軟件,挑選適合的程序庫或開發(fā)框架。模塊的概念1讀入模塊:import與from4模塊的使用2使用內(nèi)置模塊3第三方模塊5目錄8.1模塊的概念模塊:獨立的.py文件包:按目錄組織模塊8.1
模塊的概念程序語言不會單獨存在,而有豐富的程序庫對其進(jìn)行擴展和支撐,例如數(shù)學(xué)運算、網(wǎng)絡(luò)連接、3D繪圖、音頻處理、機器人控制等等。如果沒有適當(dāng)?shù)某绦驇?,在開發(fā)時我們就要辛苦地編寫底層程序,而不能專注于真正想要開發(fā)的上層軟件功能。當(dāng)Python程序日漸龐大時,需要將程序代碼根據(jù)功能特色適當(dāng)分割,供不同領(lǐng)域的開發(fā)者選擇與使用。Python的模塊可以是Python,也可以是C(或其他)語言的程序代碼。8.1.1模塊:獨立的.py文件在程序開發(fā)過程中,為了編寫可維護(hù)的代碼,開發(fā)人員會把函數(shù)分組,分別放到不同的文件里,這樣,每個文件包含的代碼就相對較少。在Python中,一個獨立的.py文件就稱為一個模塊。模塊編寫完畢后,可以在其他程序代碼段中引用(程序復(fù)用)。我們在編寫程序的時候可以引用Python內(nèi)置的模塊,自定義的模塊和來自第三方開發(fā)者的模塊。使用模塊還可以避免函數(shù)名和變量名的沖突。相同名字的函數(shù)和變量可以分別存在于不同的模塊中,因此,編寫模塊時不必考慮名字會與其他模塊沖突。但是,模塊名要遵循Python變量命名規(guī)范,注意名字不要與內(nèi)置函數(shù)名字沖突。8.1.2包:按目錄組織模塊一些較大規(guī)模的程序設(shè)計工作通常是團隊合作的成果。為了避免合作中可能造成的模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)。例如,abc.py文件就是一個名字叫abc的模塊,xyz.py文件就是一個名字叫xyz的模塊?,F(xiàn)在假設(shè)abc和xyz這兩個模塊名字與其他模塊沖突了,于是,可以通過包來組織模塊,避免沖突。方法是選擇一個頂層包名,比如mycompany,按照目錄存放。目錄結(jié)構(gòu)(1)8.1.2包:按目錄組織模塊引入包以后,只要頂層包的名字不與別人沖突,那所有模塊都不會與別人沖突?,F(xiàn)在,abc.py模塊的名字就變成了mycompany.abc,類似的,xyz.py的模塊名變成了mycompany.xyz。每一個包目錄下面都必須存在一個__init__.py文件,否則Python會把這個目錄當(dāng)成普通目錄。__init__.py可以是空文件,也可以有Python代碼,因為__init__.py本身就是一個模塊,而它的模塊名就是mycompany。類似的,可以有多級目錄,組成多級層次的包結(jié)構(gòu)。文件www.py的模塊名就是mycompany.web.www,兩個文件utils.py的模塊名分別是mycompany.utils和mycompany.web.utils。目錄結(jié)構(gòu)(2)8.1.2包:按目錄組織模塊自己創(chuàng)建模塊時,要注意命名不能和Python自帶的模塊名稱沖突。例如,系統(tǒng)自帶了sys模塊,自己的模塊就不可命名為sys.py,否則將無法導(dǎo)入系統(tǒng)自帶的sys模塊。模塊的讀入自定義程序模塊標(biāo)準(zhǔn)程序庫順序搜索模塊8.2模塊的使用8.2
模塊的使用一個Python程序可以由一個或多個模塊組成,不管是語句(def、for、賦值)或表達(dá)式(運算符、函數(shù)調(diào)用、列表生成式),都必須放在模塊里。Python解釋器執(zhí)行時,也是以模塊為執(zhí)行單位,當(dāng)想使用別的模塊文件里定義的函數(shù)、類型、常數(shù)時,須以語句import來讀入,基本語法如下: import模塊名8.2.1模塊的讀入下面以兩個文件為例,一個是主程序文件,一個是模塊文件,主程序文件會讀入模塊文件,使用里面定義的對象?!境绦?qū)嵗?-1】主程序文件。#myhello.pya=26b=16importmymath #讀入模塊defmain():print('HelloPython')print('piis'+str(mymath.pi)) #使用
print('gcd(%d,%d)is%d'%(a,b,mymath.gcd(a,b)))8.2.1模塊的讀入print('factorial(%d)is%d'%(6,mymath.factorial(6)))print('ByePython')if__name__=='__main__':print('%sasmainprogram'%__name__)print('mymath.__name__is%s'%mymath.__name__)main()8.2.1模塊的讀入【程序?qū)嵗?-2】模塊文件。#mymath.pypi=3.14defgcd(a,b):whileb:a,b=b,a%breturnadeffactorial(n):result=18.2.1模塊的讀入foriinrange(1,n+1):result*=ireturnresultif__name__=='__main__':print('%sasmainprogram'%__name__)8.2.1模塊的讀入8.2.1模塊的讀入不管是哪一個文件,對Python解釋器來說都是模塊。主程序文件是整個程序的入口,所以也稱為主模塊文件。每個模塊都有個名為“__name__”的屬性項,存放著代表模塊名的字符串,主模塊的__name__會是'__main__',而其他模塊的__name__是該模塊文件的主文件名。運行結(jié)果:在命令行下達(dá)指令“pythonmyhello.py”。$pythonmyhello.py__main__asmainprogrammymath.__name__ismymathHelloPythonpiis3.14gcd(26,16)is2factorial(6)is720ByePython8.2.1模塊的讀入程序分析:命令中的myhello.py是主程序文件,Python解釋器為它建立模塊(也是對象),其命名空間成為全局命名空間,串聯(lián)的內(nèi)置命名空間成為當(dāng)前環(huán)境,在此環(huán)境里執(zhí)行語句,所以之后的賦值語句與def語句,會在當(dāng)前環(huán)境里產(chǎn)生名稱a、b、main并指向相對應(yīng)的對象。執(zhí)行語句“importmymath”時,解釋器先尋找名為mymath的模塊文件(擴展名不一定是.py),找到后載入并初始化,同樣建立模塊對象,此模塊的命名空間成為mymath.py程序代碼的全局命名空間,在此環(huán)境里面執(zhí)行mymath.py的語句,所以在全局范圍里建立的名稱pi、gcd、factorial被放進(jìn)全局命名空間里,也就是該模塊的命名空間;該模塊的__name__是'mymath'、不是'__main__',所以mymath.py的if語句為假、不會執(zhí)行。8.2.1模塊的讀入成功載入模塊后,回到myhello.py的語句“importmymath”,此語句因處于全局范圍,所以在全局命名空間里產(chǎn)生名稱mymath,指向剛剛載入的模塊對象。然后,因為主模塊的__name__是'__main__',所以if語句為真,進(jìn)入執(zhí)行,執(zhí)行print輸出一些信息,接著調(diào)用函數(shù)main,通過名稱mymath(指向模塊對象)存取該模塊的屬性項,也就是該模塊命名空間里的各個名稱與其指向的對象,于是便能調(diào)用mymath.pi指向的int對象,調(diào)用mymath.gcd與mymath.factorial指向的函數(shù)對象。8.2.1模塊的讀入若下達(dá)指令“pythonmymath.py”的話,流程同上,Python解釋器把mymath.py當(dāng)作主程序文件建立模塊對象,并把它的屬性項__name__設(shè)為'__main__',它的命名空間成為全局命名空間,在此環(huán)境下執(zhí)行程序語句,建立對象并指派給名稱pi、gcd、factorial,然后執(zhí)行if語句為真,輸出一些信息后結(jié)束。$pythonmymath.py__main__asmainprogram8.2.2自定義程序模塊下面這個簡單例子有兩個文件,一個是主程序文件,一個是模塊文件,把這兩個文件放在同一個目錄里。模塊文件(mymath.py)里有浮點數(shù)pi、函數(shù)gcd(計算兩個整數(shù)的最大公因數(shù))、函數(shù)factorial(階乘)?!境绦?qū)嵗?-3】模塊文件。#mymath.pypi=3.14defgcd(a,b): #最大公約數(shù)
whileb:a,b=b,a%breturnadeffactorial(n): #n階乘等于1*2*3*...*nresult=1foriinrange(1,n+1):result*=ireturnresult8.2.2自定義程序模塊8.2.2自定義程序模塊在主程序文件(myhello.py)里使用“importmymath”讀入模塊,不要加擴展名.py。讀入后,名稱mymath指向剛剛讀入的模塊。模塊在Python里也是個對象,類型是module。【程序?qū)嵗?-4】主程序文件。#myhello.pyimportmymathprint('---HelloPython---')print('piis'+str(mymath.pi))print('gcdof24and16is'+str(mymath.gcd(24,16)))print('factorialof6is'+str(mymath.factorial(6)))print('---ByePython---')8.2.2自定義程序模塊8.2.2自定義程序模塊程序分析:在myhello.py里使用“importmymath”的作用就如執(zhí)行mymath.py一樣,只不過執(zhí)行后得到的名稱,會被放入模塊對象里,因為Python模塊對象有命名空間的功能,也就是說可存放東西(名稱);讀入后,可以使用“模塊名.名稱”的語法存取模塊里的名稱(及其所指向的對象)。8.2.3標(biāo)準(zhǔn)程序庫除了Python語言的實例,Python的模塊也可以使用其他語言來開發(fā),例如CPython的標(biāo)準(zhǔn)程序庫模塊就采用C語言實例。在模塊keyword里,列表kwlist含有Python的保留字,而函數(shù)iskeyword可判定某字符串是否為保留字。>>>importkeyword #讀入模塊keyword>>>keyword.kwlist #含有所有保留字的列表['False','None','True','and','as','assert','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']>>>len(keyword.kwlist) #有33個保留字33>>>keyword.iskeyword('import') #import是保留字True>>>keyword.iskeyword('a') #a不是保留字False8.2.3標(biāo)準(zhǔn)程序庫8.2.3標(biāo)準(zhǔn)程序庫有個模塊含有Python全部的內(nèi)置名稱,包括函數(shù)、常數(shù)、異常等,而且已缺省讀入,名稱是__builtins__,調(diào)用內(nèi)置函數(shù)dir可列出模塊內(nèi)容。>>>__builtins__<module'builtins'(built-in)>>>>dir(__builtins__) #使用內(nèi)置函數(shù)dir可列出模塊內(nèi)容['ArithmeticError','AssertionError','AttributeError','BaseException...省略...visionError','_','__build_class__','__debug__','__doc__','__impor...省略...,'property','quit','range','repr','reversed','round','set','setattr','slice','sorted','staticmethod','str','sum','super','tuple','type','vars','zip']8.2.3標(biāo)準(zhǔn)程序庫模塊math里含有各種常用的數(shù)學(xué)函數(shù),諸如sqrt(x)計算平方根、pow(x,y)計算x的y次方、log10(x)求出x的對數(shù)(底為10)、sin(x)與tan(x)等三角函數(shù)、pi與e等數(shù)學(xué)常數(shù)。>>>importmath>>>math.pi,math.e #數(shù)學(xué)常數(shù)pi與e(3.141592653589793,2.718281828459045)>>>math.factorial(6) #階乘720>>>math.log10(1000),math.log10(99) #對數(shù)(底10)(3.0,1.99563519459755)>>>math.log(math.e),math.log(1) #自然對數(shù)(1.0,0.0)>>>math.log(32,2),math.log(1024,2) #對數(shù)(底2)(5.0,10.0)>>>math.sqrt(9),math.sqrt(2) #平方根(3.0,1.4142135623730951)>>>math.sin(math.radians(90)) #三角函數(shù)1.08.2.3標(biāo)準(zhǔn)程序庫模塊random跟隨機數(shù)相關(guān),提供各種產(chǎn)生隨機數(shù)的函數(shù)。>>>importrandom>>>random.seed()#讀入模塊時也會自動初始化>>>random.random() #從0到1(不含)隨機選出隨機數(shù)(浮點數(shù))0.7700810990667997>>>random.randint(1,7)#從1到6隨機選出隨機數(shù)(整數(shù)),3#模擬骰子>>>random.uniform(0.1,0.5)#從0.1到0.5隨機選出隨機數(shù)(浮點數(shù))0.249325352761464348.2.3標(biāo)準(zhǔn)程序庫>>>li=[2,99,132,44,0.1]>>>random.choice(li) #從列表li中隨機選出一個元素99>>>random.shuffle(li) #打亂li的內(nèi)容>>>li[2,44,0.1,99,132]>>>random.choice(range(2,20,2))#從指定的范圍內(nèi)隨機選出一個128.2.3標(biāo)準(zhǔn)程序庫8.2.3標(biāo)準(zhǔn)程序庫不過Python的模塊random提供的是虛擬隨機數(shù)(或稱偽隨機數(shù)),不可用于密碼、加密、安全等方面。這種隨機數(shù)若了解其機制與規(guī)則,便能得知將會產(chǎn)生哪個隨機數(shù)。當(dāng)讀者執(zhí)行上面的程序代碼時,將會得到與此處舉例不同的隨機數(shù)值,這是因為“random.seed()”缺省情況下會以系統(tǒng)時間作為隨機數(shù)種子進(jìn)行初始化,既然種子不同,那么后續(xù)得到的隨機數(shù)也會不同,但若每次都給定相同的種子,就會得到相同的隨機數(shù)。>>>importrandom>>>random.seed(333) #輸入某個東西作為種子>>>random.random()0.5548354562432166 #讀者應(yīng)該也會得到此隨機數(shù)值,>>>random.random()0.3531347454768303 #如果使用與作者相同的Python實例的話8.2.4順序搜索模塊讀入模塊時,Python會到模塊搜尋路徑(sys.path)逐一尋找,在啟動Python解釋器時,會從多個設(shè)定來源組成這個列表,包括:當(dāng)前目錄、環(huán)境變數(shù)PYTHONPATH、標(biāo)準(zhǔn)程序庫目錄、.pth檔的內(nèi)容、第三方程序庫安裝目錄site-packages。要注意的是,Python解釋器會“按照順序”逐一尋找,所以若兩個模塊同名、放在不同的路徑,那么只會載入先找到的模塊。9.3
使用內(nèi)置模塊8.3
使用內(nèi)置模塊Python內(nèi)置了許多非常有用的模塊,無需額外安裝和配置即可直接使用?!境绦?qū)嵗?-5】用內(nèi)置sys模塊編寫一個hello模塊。#hello.py#!/usr/bin/envpython3#-*-coding:utf-8-*-'一個測試模塊'__author__='MichaelLiao'importsys8.3
使用內(nèi)置模塊deftest():args=sys.argviflen(args)==1:print('Hello,world!')eliflen(args)==2:print('Hello,%s!'%args[1])else:print('Toomanyarguments!')if__name__=='__main__':test()8.3
使用內(nèi)置模塊8.3
使用內(nèi)置模塊程序分析:第1行和第2行是標(biāo)準(zhǔn)注釋,第1行注釋可以讓這個hello.py文件直接在Unix/Linux/Mac上運行,第2行注釋表示.py文件本身使用標(biāo)準(zhǔn)UTF-8編碼;第4行是一個字符串,表示模塊的文檔注釋,任何模塊代碼的第一個字符串都被視為模塊的文檔注釋;第6行使用__author__變量把作者寫進(jìn)去,這樣當(dāng)你公開源代碼后別人就可以仰慕你的大名;以上就是Python模塊的標(biāo)準(zhǔn)文件模板,當(dāng)然也可以全部刪掉不寫,但是,按標(biāo)準(zhǔn)做通常是有益的。后面開始就是真正的代碼部分。8.3
使用內(nèi)置模塊使用sys模塊的第一步,就是導(dǎo)入該模塊: importsyssys模塊導(dǎo)入后,就有了變量sys指向該模塊,利用這個變量可以訪問sys模塊的所有功能。import/as語句from/import語句import*的妙用內(nèi)置函數(shù)dir()9.4讀入模塊:import與from8.4
讀入模塊:import與from以語句import讀入模塊時,Python解釋器會到模塊搜尋路徑里去找,模塊搜尋路徑被放在sys.path這個列表里。>>>importsys #這是Windows版的CPython>>>sys.path #空字符串“''”代表目前路徑['','C:\\WINDOWS\\system32\\python34.zip','C:\\Python34\\DLLs','C:\\Python34\\lib','C:\\Python34','C:\\Python34\\lib\\site-packages']Python的模塊會以不同的文件格式出現(xiàn)。例如在Windows上可能會是DLL文檔,在Linux上可能是.so文檔,在JVM上可能是Java類型文檔。所以,Python模塊的擴展名不一定是.py,有些模塊甚至已經(jīng)直接與Python解釋器合并在一起。因此,以語句import讀入模塊時,模塊名稱不要加.py后綴。8.4
讀入模塊:import與from以“importmymath”為例,Python解釋器到模塊搜尋路徑去尋找,首先到“''”去尋找,空字符串代表目前路徑,也就是主程序文件所在的路徑,找到了mymath.py;因為已完成開發(fā)的模塊通常需要反復(fù)讀入,為了加速執(zhí)行速度,Python解釋器會先對模塊作編譯動作轉(zhuǎn)成字節(jié)碼,然后才讀入,所以會產(chǎn)生新目錄__pycache__來存放。下次執(zhí)行程序讀入模塊時,若原始模塊文檔的日期時間比已編譯模塊文件還新,便會重新編譯再載入,否則就直接從__pycache__目錄中載入已編譯模塊文檔,加快執(zhí)行速度。8.4
讀入模塊:import與from找到模塊文件后就執(zhí)行其內(nèi)容、建立模塊對象,之后在執(zhí)行import語句的范圍里產(chǎn)生名稱,指向該模塊對象。所以,若是在函數(shù)(局部)范圍里執(zhí)行import的話,模塊的名稱也只會存在于局部范圍(命名空間)里,外界無法存取該名稱。defmain():importsys #指向模塊的名稱sys,存在于函數(shù)的局部范圍內(nèi)
print(sys.path)main() #可正常執(zhí)行print(sys.path) #錯誤,找不到名稱sys8.4
讀入模塊:import與from至此,讀者應(yīng)該很清楚了,所謂讀入模塊,就是要求Python解釋器去執(zhí)行另一個Python程序文件,建立對象、指派名稱、把名稱放在模塊的命名空間里;然后得到模塊對象并給予名稱,我們便可透過該名稱來使用模塊,存取模塊里的內(nèi)容。語句import尚有很多變化,各有其用。8.4.1import/as語句當(dāng)模塊名很長時,例如Python標(biāo)準(zhǔn)程序庫里的模塊random,若每次都要輸入“random”,有人會覺得麻煩,在import語句后加上as子句,便可定義簡短的新名稱。 import模塊名as短名稱importrandomasr #讀入模塊random,指派給名稱rprint(r.randint(1,6)) #從1到6(骰子)中隨機挑一個print(r.choice(['a','b','c'])) #從列表中隨機挑出一個ri=r.randint #也可以建立新名稱riprint(ri(1,6)) #從1到6(骰子)中隨機挑一個8.4.2from/import語句有些人不喜歡“模塊名.屬性項名”這樣的語法,若使用from/import語句,可以直接讀入屬性項(名稱與指向的對象),當(dāng)你只需要模塊里少數(shù)幾個函數(shù)時,特別好用。from模塊名import名稱from模塊名import名稱as短名稱fromrandomimportrandint #產(chǎn)生名稱randint,指向模塊randomprint(randint(1,6)) #里的函數(shù)randintfromrandomimportrandintasri #短名稱riprint(ri(1,6))#print(random.randint(1,6)) #若執(zhí)行會出錯,因為找不到名稱randomimportrandom #產(chǎn)生名稱random,指向模塊對象print(random.randint(1,6)) #okprint(riisrandint) #True,不同名稱指向同一個對象(函數(shù))print(riisrandom.randint) #True8.4.2from/import語句8.4.2from/import語句雖然上面實例看起來好像會讀入模塊random好幾次,但實際上Python解釋器只會載入一次并記著,供后續(xù)的讀入語句(不管是import還是from)使用。此實例的重點在于,當(dāng)執(zhí)行“fromrandomimportrandint”時,雖然模塊random已被讀入,但在你的程序里只建立了名稱randint指向random.randint,因為你手上并沒有指向模塊random的名稱,所以無法使用。模塊是Python程序的基本單位?!癴rom模塊名import名稱”看起來好像只讀入了某個名稱,但實際上,模塊會被整個載入,然后才根據(jù)from/import語句產(chǎn)生名稱指向相對應(yīng)的對象。8.4.3import*的妙用from/import還可使用星號“*”,代表讀入該模塊內(nèi)全部的屬性項(名稱與指向的對象)。其實作用就跟明確指定名稱時一樣,只不過現(xiàn)在由Python解釋器代勞,讀入模塊內(nèi)全部的名稱。 from模塊名import*fromrandomimport* #讀入全部print(randint(1,6)) #直接使用print(choice(['a','b','c']))print(random()) #名稱random指向函數(shù)對象print(random.randint(1,6)) #出錯,random并非模塊8.4.3import*的妙用8.4.3import*的妙用“import*”并非好的寫法,因為會讀入全部的名稱,容易與程序內(nèi)的名稱沖突。當(dāng)需要讀入多個模塊時,不同模塊可能使用相同的名稱,更容易發(fā)生沖突,難以管理。choice=[1,2,3,4,5,6] #名稱choice、指向list對象fromrandomimport* #讀入,模塊random里也有choice(函數(shù))print(choice(['a','b','c'])) #現(xiàn)在名稱choice指向函數(shù)了一般建議是把import語句放在最外層、放在程序文件最前頭,這樣一看便知用了哪些模塊。編寫模塊時,可運用兩種方式控制“import*”會讀入哪些名稱,第一種方式是在名稱前冠上下劃線“_”,這種名稱不會被“import*”讀入。假設(shè)有個模塊文件如下:【程序?qū)嵗?-6】名稱前冠上下劃線“_”。#mymath2.py_x='xxx' #有下劃線“_”_y=3 #有下劃線“_”pi=3.14defgcd(a,b):passdeffactorial(n):passdef_z():pass
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北生態(tài)溫室施工方案
- 鐵嶺水源井施工方案
- 鋼渣施工方案
- 預(yù)制水磨石樓地面施工方案
- 六安鋼纖維窨井蓋施工方案
- 綠化種植工程施工方案
- 云南學(xué)校草坪施工方案
- 青浦區(qū)老舊廠房施工方案
- 鋪設(shè)水泥路面基礎(chǔ)施工方案
- 蘇州螺旋風(fēng)管安裝施工方案
- GB/T 2565-2014煤的可磨性指數(shù)測定方法哈德格羅夫法
- GB/T 17574.11-2006半導(dǎo)體器件集成電路第2-11部分:數(shù)字集成電路單電源集成電路電可擦可編程只讀存儲器空白詳細(xì)規(guī)范
- 快手磁力聚星知識考試題庫及答案
- 學(xué)校衛(wèi)生監(jiān)督協(xié)管巡查記錄
- 《勾股定理在實際生活中的應(yīng)用》教學(xué)反思
- 游泳池給水排水安裝工程識圖
- 配位鍵和配位化合物課件
- 政 審 表打印模板
- 成人心肺復(fù)蘇(雙人)課件
- 蘇教版數(shù)學(xué)二年級下冊《認(rèn)識時分》教案(無錫公開課)
- 《民航地面服務(wù)與管理》項目六課件
評論
0/150
提交評論