Python 3 基礎教程(第3版)(慕課版) 課件 第6章 函數與模塊_第1頁
Python 3 基礎教程(第3版)(慕課版) 課件 第6章 函數與模塊_第2頁
Python 3 基礎教程(第3版)(慕課版) 課件 第6章 函數與模塊_第3頁
Python 3 基礎教程(第3版)(慕課版) 課件 第6章 函數與模塊_第4頁
Python 3 基礎教程(第3版)(慕課版) 課件 第6章 函數與模塊_第5頁
已閱讀5頁,還剩83頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python3基礎教程第2版慕課版單元6函數與模塊任務6-1:定義個人綜合所得稅計算函數【任務目標】修改任務5-1中實現的個人綜合所得稅計算程序,定義一個函數來完成個人綜合所得稅計算,將月工資及各項扣除費用作為參數傳遞給函數,函數返回應繳納的個人綜合所得稅。調用函數,完成表6-1中3名員工的個人綜合所得稅計算?!救蝿諏嵤垦菔具^程……6.1函數在實現大型項目時,程序員往往會將需要重復使用的代碼提取出來,將其定義為函數,從而減輕編程工作量,也使程序結構簡化。本節主要內容:定義函數調用函數函數的參數函數嵌套定義lambda函數遞歸函數函數列表程序設計方法簡介6.1.1定義函數def語句用于定義函數,其基本格式如下。def函數名(參數表):

函數語句

return返回值參數和返回值都可省略,示例代碼如下。>>>defhello(): #定義函數...print('Python你好')...>>>hello() #調用函數Python你好hello()函數沒有參數和返回值,它調用print()函數輸出一個字符串。為函數指定參數時,參數之間用逗號分隔。下面的例子為函數定義兩個參數,并返回兩個參數的和。>>>defadd(a,b): #定義函數...returna+b...>>>add(1,2) #調用函數36.1.2調用函數調用函數的基本格式如下。函數名(參數表)在Python中,所有的語句都是解釋執行的,不存在如C/C++中的編譯過程。def也是一條可執行語句,它完成函數的定義。Python中函數的調用必須出現在函數的定義之后。在Python中,函數也是對象(function對象)。def語句在執行時會創建一個函數對象。函數名是一個變量,它引用def語句創建的函數對象??蓪⒑瘮得x值給變量,使變量引用同一個函數>>>defadd(a,b): #定義函數...returna+b...>>>add #直接用函數名,可返回函數對象的內存地址<functionaddat0x00D41078>>>>add(10,20) #調用函數30>>>x=add #將函數名賦值給變量>>>x(1,2) #通過變量調用函數36.1.3函數的參數在函數定義的參數表中的參數稱為形式參數,簡稱形參。調用函數時,參數表中提供的參數稱為實際參數,簡稱實參。實參可以是常量、表達式或變量。實參是常量或表達式時,直接將常量或表達式計算結果傳遞給形參。在Python中,變量保存的是對象的引用,實參為變量時,參數傳遞會將實參對對象的引用賦值給形參。1.參數的多態性多態是面向對象的一個特點,指不同對象執行同一個行為可能會得到不同的結果。同一個函數,傳遞的實際參數類型不同時,可獲得不同的結果,體現了多態性。>>>defadd(a,b): ...returna+b #兩個參數執行加法運算...>>>add(1,2) #執行數字加法3>>>add('abc','def') #執行字符串連接'abcdef'>>>add((1,2),(3,4)) #執行元組合并(1,2,3,4)>>>add([1,2],[3,4]) #執行列表合并[1,2,3,4]2.參數賦值傳遞調用函數時會按參數的先后順序,依次將實參傳遞給形參。例如,調用add(1,2)時,1傳遞給a,2傳遞給b。Python允許以形參賦值的方式,將實參傳遞給指定形參。>>>defadd(a,b):...returna+b...>>>add(a='ab',b='cd') #通過賦值來傳遞參數'abcd'>>>add(b='ab',a='cd') #通過賦值來傳遞參數'cdab'采用參數賦值傳遞時,因為指明了形參名稱,所以參數的先后順序已無關緊要。參數賦值傳遞的方式稱為關鍵字傳遞,此時可將形參稱為關鍵字。3.參數傳遞與共享引用>>>deff(x):...x=100...>>>a=10>>>f(a) >>>a10從結果可以看出,將實參a傳遞給形參x后,在函數中重新賦值x,并不會影響到實參a。這是因為Python中的賦值是建立變量到對象的引用。重新賦值時,意味著形參引用了新的對象。當實參引用的是可變對象,如列表、字典等時,若在函數中修改形參,通過共享引用,實參也引用修改后的對象,示例代碼如下。>>>deff(a):...a[0]='abc' #修改對象的第一個元素值...>>>x=[1,2]>>>f(x) #調用函數,傳遞列表對象的引用>>>x #變量x引用的列表對象在函數中被修改['abc',2]如果不希望函數內的修改影響函數外的數據,應注意避免傳遞可變對象的引用。如果要避免列表在函數中被修改,可使用列表的副本作為實參,示例代碼如下。>>>deff(a):...a[0]='abc' #修改對象的第一個元素值...>>>x=[1,2]>>>f(x[:]) #傳遞列表的副本>>>x #結果顯示原列表不變[1,2]還可以在函數中對列表進行復制,調用函數時實參使用引用列表的變量,示例代碼如下。>>>deff(a):...a=a[:] #復制列表...a[0]='abc' #修改列表的副本...>>>x=[1,2]>>>f(x) #調用函數>>>x #結果顯示原列表不變[1,2]4.有默認值的可選參數在定義函數時,可以為參數設置默認值。調用函數時如果未提供實參,則形參取默認值,示例代碼如下。>>>defadd(a,b=-100): #參數b默認值為-100...returna+b...>>>add(1,2) #傳遞指定參數3>>>add(1) #形參b取默認值-99應注意,帶默認值的參數為可選參數,在定義函數時,應放在參數表的末尾。5.接受任意個數的參數在定義函數時,如果在參數名前面使用星號“*”,表示形參是一個元組,可接受任意個數的參數。調用函數時,可以不為帶星號的形參提供數據示例代碼如下。>>>defadd(a,*b):...s=a...forxinb: #用循環迭代元組b中的對象...s+=x #累加...returns #返回累加結果...>>>add(1)#不為帶星號的形參提供數據,此時形參b為空元組1>>>add(1,2) #求兩個數的和,此時形參b為元組(2,)3>>>add(1,2,3) #求3個數的和,此時形參b為元組(2,3)6>>>add(1,2,3,4,5) #求5個數的和,此時形參b為元組(2,3,4,5)156.必須通過賦值傳遞的參數Python允許使用必須通過賦值傳遞的參數。在定義函數時,帶星號參數之后的參數必須通過賦值傳遞示例代碼如下。>>>defadd(a,*b,c):...s=a+c...forxinb:...s+=x...returns...>>>add(1,2,3) #形參c未使用賦值傳遞,出錯Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:add()missing1requiredkeyword-onlyargument:'c'>>>add(1,2,c=3) #形參c使用賦值傳遞6>>>add(1,c=3) #帶星號參數可以省略4在定義函數時,也可單獨使用星號,其后的參數必須通過賦值傳遞示例代碼如下。>>>deff(a,*,b,c): #參數b和c必需通過賦值傳遞...returna+b+c...>>>f(1,b=2,c=3)66.1.4函數嵌套定義Python允許在函數內部定義函數,示例代碼如下。>>>defadd(a,b): ...defgetsum(x): #在函數內部定義的函數,將字符串轉換為Unicode碼求和...s=0...forninx:...s+=ord(n)...returns...returngetsum(a)+getsum(b) #調用內部定義的函數getsum...>>>add('12','34') #調用函數202注意,內部函數只能在函數內部使用。6.1.5lambda函數lambda函數也稱表達式函數,用于定義匿名函數??蓪ambda函數賦值給變量,通過變量調用函數。lambda函數定義的基本格式如下。lambda參數表:表達式示例代碼如下。>>>add=lambdaa,b:a+b #定義表達式函數,賦值給變量>>>add(1,2) #函數調用格式不變3>>>add('ab','ad')'abad'lambda函數非常適合定義簡單的函數與def不同,lambda的函數體只能是一個表達式可在表達式中調用其他的函數,但不能使用其他的語句示例代碼如下。>>>add=lambdaa,b:ord(a)+ord(b) #在lambda表達式中調用其他的函數>>>add('1','2')996.1.6遞歸函數遞歸函數是指在函數體內調用函數本身。例如,下面的函數fac()實現計算階乘。>>>deffac(n): #定義函數...ifn==0: #遞歸調用的終止條件...return1...else:...returnn*fac(n-1) #遞歸調用函數本身...>>>fac(5)120注意,遞歸函數必須在函數體中設置遞歸調用的終止條件。如果沒有設置遞歸調用終止條件,程序會在超過Python允許的最大遞歸調用深度后,產生RecursionError異常(遞歸調用錯誤)。6.1.7函數列表因為函數是一種對象,所以可將其作為列表元素使用,然后通過列表索引來調用函數示例代碼如下。>>>d=[lambdaa,b:a+b,lambdaa,b:a*b] #使用lambda函數建立列表>>>d[0](1,3) #調用第一個函數4>>>d[1](1,3) #調用第二個函數3也可使用def定義的函數來創建列表,示例代碼如下。>>>defadd(a,b): #定義求和函數...returna+b...>>>deffac(n): #定義求階乘函數...ifn==0:...return1...else:...returnn*fac(n-1)>>>d=[add,fac] #建立函數列表>>>d[0](1,2) #調用求和函數3>>>d[1](5) #調用求階乘函數120>>>d=(add,fac) #建立包含函數列表的元組對象>>>d[0](2,3) #調用求和函數5>>>d[1](5) #調用求階乘函數120Python還允許使用字典來建立函數映射,示例如下。>>>d={'求和':add,'求階乘':fac}#用函數add和fac建立函數映射>>>d['求和'](1,2) #調用求和函數3>>>d['求階乘'](5) #調用求階乘函數1206.1.8程序設計方法簡介程序設計方法是思考、設計、編寫程序的方法,也可稱為編程范式。編程范式主要分為兩大范式:命令式編程范式、聲明式編程范式。這兩大范式衍生出最基本的面向過程范式、面向對象范式、函數式范式和邏輯式范式4種子編程范式。面向過程范式和面向對象范式屬于命令式編程范式,函數式范式和邏輯式范式屬于聲明式編程范式。Python支持面向過程范式、面向對象范式、函數式范式等多種子編程范式。1.面向過程范式面向過程范式也稱過程式編程,是一種基于計算過程或運算流程的編程范式。過程式編程將計算任務描述為操作流程或步驟,逐步實現操作流程或步驟所要求的計算功能。面向過程程序是由多個過程組合而成的,其中包含順序、分支和循環等程序控制結構。2.面向對象范式面向對象范式用類來表示實體,對象是類的實例。數據和操作被封裝在對象中,數據是對象的數據成員,操作是對象的方法成員。執行方法時,對象根據來自方法的消息執行相應的計算,以實現交互并完成任務。3.函數式范式函數式范式是一種基于遞歸函數計算理論的范式,其程序由一系列函數組成,執行程序便是計算這些函數并對表達式求值。例如,Python中的list(map(lambdax:x*2,range(4))表達式通過多個函數調用生成列表[0,2,4,6]。Python還支持一種新的編程范式——生態式編程。Python通過數量龐大的第三方庫,構成了一個覆蓋眾多應用領域的計算生態。在程序中,通過使用第三方庫,只需要簡單的程序代碼即可實現功能復雜的應用程序。任務6-2:測試變量作用域【任務目標】運行下面的程序,關注程序中全局變量和本地變量的值。#test6_07.py:測試變量作用域a=10#賦值,創建全局變量defshow():a=100#賦值,創建本地變量print('inshow():a=',a)#輸出本地變量ashow()print('全局變量:a=',a)#輸出全局變量a【任務實施】演示過程……6.2變量的作用域變量的作用域是變量的可使用范圍,也稱為變量的命名空間。在第一次給變量賦值時,Python創建變量,變量創建的位置決定了變量的作用域。本節主要內容:作用域分類global語句nonlocal語句6.2.1作用域分類Python中變量的作用域可分為4種:本地作用域、函數嵌套作用域、文件作用域和內置作用域,如圖所示本地作用域:沒有內部函數時,函數體為本地作用域。函數內通過賦值創建的變量、函數參數的作用域都為本地作用域。函數嵌套作用域:包含內部函數時,函數體為函數嵌套作用域。文件作用域:程序文件(也稱模塊文件)的內部為文件作用域。內置作用域:Python運行時的環境為內置作用域,它包含Python的各種內置的變量和函數。內置作用域和文件作用域可稱為全局作用域。根據作用域范圍大小,通常將變量分為兩種:全局變量和本地變量。在內置作用域和文件作用域內定義的變量都屬于全局變量(函數則可稱為全局函數)。在函數嵌套作用域和本地作用域內定義的變量都屬于本地變量,本地變量也可稱為局部變量(函數則可成為本地函數或局部函數)。考察下面的代碼:#文件作用域a=10 #a是全局變量defadd(b): #參數b是函數add內的本地變量

c=a+b #c是函數add內的本地變量,a是函數外部的全局變量

returncprint(add(5)) #調用函數該程序在運行過程中,會創建4個變量:a、b、c和add,a和add是文件作用域內的全局變量,b和c是函數add內部的本地變量。另外該程序還用到了print這個內置函數,它是內置作用域中的全局變量。作用域外的變量與作用域內的變量名稱相同時,以“本地”優先原則,此時外部的變量被屏蔽——稱為作用域隔離原則。>>>a=10 #賦值,創建全局變量a>>>defshow():...a=100 #賦值,創建本地變量a...print('inshow():a=',a) #輸出本地變量a...>>>show()inshow():a=100>>>a #輸出全局變量a106.2.2global語句在函數內部給變量賦值時,默認情況下該變量為本地變量。為了在函數內部給全局變量賦值,Python提供了global語句,用于在函數內部聲明全局變量示例代碼如下。>>>defshow():...globala #聲明a是全局變量...print('a=',a) #輸出全局變量a...a=100 #給全局變量a賦值...print('a=',a)>>>a=10>>>show()a=10a=100>>>a1006.2.3nonlocal語句作用域隔離原則同樣適用于嵌套函數。在嵌套函數內使用與外層函數同名的變量時,若該變量在嵌套函數內沒有被賦值,則該變量就是外層函數的本地變量示例代碼如下。>>>deftest():...a=10 #創建test函數的本地變量a...defshow():...print('inshow(),a=',a) #使用test函數的本地變量a...show()...print('intest(),a=',a) #使用test函數的本地變量a...>>>test()inshow(),a=10intest(),a=10修改上面的代碼,在嵌套函數show()內為a賦值,代碼如下。>>>deftest():...a=10 #創建test函數的本地變量a...defshow():...a=100 #創建show函數的本地變量a...print('inshow(),a=‘,a) #使用show函數的本地變量a...show()...print('intest(),a=',a) #使用test函數的本地變量a...>>>test()inshow(),a=100intest(),a=10如果要在嵌套函數內部為外層函數的本地變量賦值,Python提供了nonlocal語句。nonlocal語句與global語句類似,它聲明變量是外層函數的本地變量,示例代碼如下。>>>deftest():...a=10 #創建test函數的本地變量a...defshow():...nonlocala #聲明a是test函數的本地變量...a=100 #為test函數的本地變量a賦值...print('inshow(),a=',a)#使用test函數的本地變量a...show()...print('intest(),a=',a) #使用test函數的本地變量a...>>>test()inshow(),a=100intest(),a=100任務6-3:調用模塊中的唐詩檢索函數【任務目標】參考任務5-2中的唐詩檢索程序,編寫一個唐詩檢索函數,用文件名和唐詩名稱作為參數,在文件中檢索唐詩。如果檢索到則返回唐詩內容,否則返回空字符串。將唐詩檢索函數保存在一個程序文件中,將該文件作為模塊使用,調用其中的唐詩檢索函數檢索指定的唐詩。【任務實施】演示過程……6.3模塊模塊也可稱為庫,是一個包含變量、函數或類的程序文件。模塊中也可以包含其他各種Python語句。大型系統往往將系統功能劃分為模塊來實現,或者將常用功能集中在一個或多個模塊文件中,然后在程序文件中導入并使用模塊。Python也提供了大量內置模塊,并可集成各種擴展模塊。本節主要內容:導入模塊導入時執行模塊用import還是from重新載入模塊模塊搜索路徑嵌套導入模塊查看模塊對象屬性__name__屬性和命令行參數隱藏模塊變量6.3.1導入模塊模塊需要先導入,然后才能使用其中的變量、函數或者類等。可使用import或from語句導入模塊,基本格式如下。import模塊名稱import模塊名稱as新名稱from模塊名稱import導入對象名稱from模塊名稱import導入對象名稱as新名稱from模塊名稱import*1.import語句import語句用于導入整個模塊,可用as為導入的模塊指定一個新名稱。導入模塊后,使用“模塊名稱.對象名稱”格式來引用模塊中的對象。>>>importmath #導入模塊>>>math.fabs(-5) #調用模塊中的函數5.0>>>math.e #使用模塊中的常量2.718281828459045>>>fabs(-5) #試圖直接使用模塊中的函數,出錯Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>NameError:name'fabs'isnotdefined>>>importmathasm #導入模塊并指定新名稱>>>m.fabs(-5) #通過新名稱調用模塊函數5.0>>>m.e #通過新名稱使用模塊常量2.7182818284590452.from語句from語句用于導入模塊中的指定對象,導入的對象可直接使用,不需要使用模塊名稱作為限定符,示例代碼如下。>>>frommathimportfabs #從模塊導入指定函數>>>fabs(-5)5.0>>>frommathimporte #從模塊導入指定常量>>>e2.718281828459045>>>frommathimportfabsasf1 #導入時指定新名稱>>>f1(-10)10.03.from…import*語句使用星號時,可導入模塊頂層的所有全局變量和函數示例代碼如下。>>>frommathimport* #導入模塊頂層的全局變量和函數>>>fabs(-5) #直接使用導入的函數5.0>>>e #直接使用導入的常量2.7182818284590456.3.2導入時執行模塊import和from語句在執行導入操作時,會執行導入模塊中的全部語句。只有執行了模塊,模塊中的變量和函數才會被創建,才能在當前模塊中使用。只有在第一次執行導入操作時,才會執行模塊。再次導入模塊時,并不會重新執行模塊。import和from語句是隱性的賦值語句,兩者的區別如下。Python執行import語句時:會創建一個模塊對象和一個與模塊文件同名的變量,并建立變量和模塊對象的引用關系。模塊中的全局對象作為模塊對象的屬性或方法使用。再次導入模塊時,不會改變模塊對象屬性的當前值。Python執行from語句時:會同時在當前模塊和被導入模塊中創建同名變量,這兩個變量引用同一個對象。再次導入模塊時,會重新將被導入模塊中變量的引用重新賦值給當前模塊的變量。再次導入時,會將被導入模塊的變量的初始值賦值給前模塊的變量。示例代碼如下。首先,創建模塊文件test.py,其代碼如下。x=100 #賦值,創建變量xprint('這是模塊test.py中的輸出!') #輸出字符串defshow(): #定義函數,執行時創建函數對象

print('這是模塊test.py中的show()函數中的輸出!')可將test.py放在系統D盤根目錄中,然后進入系統命令提示符窗口,在D盤根目錄中執行python.exe進入Python交互環境D:\>python……>>>importtest #導入模塊,下面的輸出說明模塊在導入時被執行這是模塊test.py中的輸出!>>>test.x #使用模塊變量100>>>test.x=200 #為模塊變量賦值>>>importtest #重新導入模塊>>>test.x #使用模塊變量,輸出結果顯示重新導入未影響變量的值200>>>test.show() #調用模塊函數這是模塊test.py中的show()函數中的輸出!>>>abc=test #將模塊變量賦值給另一個變量>>>abc.x #使用模塊變量200>>>abc.show() #調用模塊函數這是模塊test.py中的show()函數中的輸出!下面的代碼使用from語句導入test模塊。>>>fromtestimportx,show #導入模塊的變量x、show這是模塊test.py中的輸出!>>>x #輸出模塊的變量的初始值100>>>show() #調用模塊函數這是模塊test.py中的show()函數中的輸出!>>>x=200 #這里是為當前模塊的變量賦值>>>fromtestimportx,show #重新導入>>>x #x的值為模塊的變量的初始值100在執行from語句時,test模塊的所有語句均被執行。from語句將test模塊的變量x和show賦值給當前模塊的變量x和show。語句“x=200”為當前模塊的變量x賦值,不會影響test模塊的變量x。在重新導入時,當前模塊變量x被重新賦值為test模塊的變量x的值。6.3.3用import還是from在使用import語句導入模塊時,模塊的變量使用“模塊名.”作為限定符,所以不存在歧義,即使導入模塊的變量與其他模塊的變量同名也沒有關系。在使用from語句導入模塊時,就需要注意多個模塊中是否存在同名變量的情況。1.使用模塊內的可修改對象使用from導入模塊時,可以直接使用變量引用模塊中的對象,從而避免輸入“模塊名.”作為限定詞。這種便利有時也會遇到麻煩。在下面的模塊test3.py中,變量x引用了整數對象100(100是不可修改對象),y引用了一個可修改的列表對象。x=100 #賦值,創建整數對象100和變量x,變量x引用整數對象100y=[10,20] #賦值,創建列表對象[10,20]和變量y,變量y引用列表對象下面的代碼使用from導入模塊test3。>>>x=10 #創建當前模塊的變量x>>>y=[1,2] #創建當前模塊的變量y>>>fromtest3import* #引用模塊中的x和y>>>x,y #輸出結果顯示確實引用了模塊中的對象(100,[10,20])>>>x=200 #賦值,使當前模塊的變量x引用整數對象200>>>y[0]=['abc'] #修改第一個列表元素,此時會修改模塊中的列表對象>>>importtest3 #再次導入模塊>>>test3.x,test3.y #輸出結果顯示模塊中的列表對象已被修改(100,[['abc'],20])2.使用from導入兩個模塊中的同名變量在下面的兩個模塊test4.py和test5.py中包含了同名的變量。#test4.pydefshow():print('outintest4.py’)#test5.pydefshow():print('outintest5.py')當兩個模塊存在同名變量時,使用from語句導入模塊會導致變量名沖突,示例代碼如下。>>>fromtest4importshow>>>fromtest5importshow>>>show()outintest5.py>>>fromtest5importshow>>>fromtest4importshow>>>show()outintest4.py當兩個模塊存在同名變量時,應使用import語句導入模塊,示例代碼如下。>>>importtest4>>>importtest5>>>test4.show()outintest4.py>>>test5.show()outintest5.py6.3.4重新載入模塊再次使用import或from語句導入模塊時,不會重新執行模塊代碼,所以不會改變模塊中變量的值。Python在importlib模塊中提供的reload()函數,它可重新載入模塊(即執行模塊代碼),從而改模塊中變量的值。reload()函數用模塊名稱作為參數,所以只能重新載入使用import語句導入的模塊。如果要重新載入的模塊還沒有導入,執行reload()函數會出錯>>>importtest #導入模塊,模塊代碼被執行這是模塊test.py中的輸出!>>>test.x100>>>test.x=200>>>importtest #再次導入>>>test.x #再次導入沒有改變當前值200>>>fromimpimportreload #導入reload函數>>>reload(test) #重載模塊,可以看到模塊代碼被再次執行這是模塊test.py中的輸出!<module'test'from'D:\\Python35\\test.py'>>>>test.x #因為模塊代碼再次執行,x恢復為初始值1006.3.5模塊搜索路徑在導入模塊時,Python會執行下列3個步驟。(1)搜索模塊文件:在導入模塊時,Python按特定的路徑搜索模塊文件。(2)必要時編譯模塊:找到模塊文件后,Python會檢查文件的時間戳。如果字節碼文件比源代碼文件舊(即源代碼文件作了修改),Python就會執行編譯操作,生成最新的字節碼文件。如果字節碼文件是最新的,則跳過編譯環節。如果在搜索路徑中只發現了字節碼,而沒有發現源代碼文件,則直接加載字節碼文件。如果只有源代碼文件,Python會執行編譯操作,生成字節碼文件。(3)執行模塊:執行模塊的字節碼文件。在導入模塊時,不能在import或from語句中指定模塊文件的路徑,只能依賴于Python搜索路徑??墒褂脴藴誓Ksys的path屬性來查看當前搜索路徑設置,示例代碼如下。>>>importsys>>>sys.path['','D:\\Python35\\python35.zip','D:\\Python35\\DLLs','D:\\Python35\\lib','D:\\Python35','D:\\Python35\\lib\\site-packages']第一個空字符串表示Python當前工作目錄。Python按照先后順序依次搜索path列表中的路徑。如果在path列表的所有路徑中均未找到模塊,則導入操作失敗。通常,sys.path由4部分設置組成。(1)Python的當前工作目錄(可用os模塊中的getcwd()函數查看當前目錄名稱)。(2)操作系統的環境變量PYTHONPATH中包含的目錄(如果存在)。(3)Python標準庫目錄。(4)任何pth文件包含的目錄(如果有存在)。Python按照上面的順序搜索各個目錄。pth文件通常放在Python安裝目錄中,文件名可以任意,例如searchpath.pth。在pth文件中,每個目錄占一行,可包含多個目錄,示例代碼如下。C:\myapp\helloD:\pytemp\src在Windows10系統中配置環境變量PYTHONPATH。演示:sys.path列表在程序啟動時,自動進行初始化??稍诖a中對sys.path列表執行添加或刪除操作>>>fromsysimportpath #導入path變量>>>path #顯示當前搜索路徑列表……>>>delpath[1] #刪除第二個搜索路徑>>>path……>>>path.append(r'D:\temp') #添加一條搜索路徑>>>path……6.3.6嵌套導入模塊Python允許任

溫馨提示

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

評論

0/150

提交評論