Python 自學第七天:Module 模組

文章推薦指數: 80 %
投票人數:10人

也就是使用其他.py 檔案中,預先定義好的變數和函式。

使用模組的好處就是,別人寫過或自己定義過的變數和函式可以直接拿來使用。

Python 有一些內建好 ... 0% 也就是使用其他.py檔案中,預先定義好的變數和函式。

使用模組的好處就是,別人寫過或自己定義過的變數和函式可以直接拿來使用。

Python有一些內建好的模組,可以直接拿來使用,如:與作業系統相關的os、與命令行相關的sys、與數學相關的math、random、statistics等,可以參考Python標準函式庫概覽。

也有其他人寫好的模組,可以從網路上下載來使用。

也可以自己定義模組。

模組的引入和使用 「全部」的變數和函式 引入 使用模組前要先告知Python主程式,即將引入哪些模組,引入方法如下: 12345#語法一:import模組名(as別名)#語法二:from模組名import* *:表示該模組中所有的變數和函式。

別名:可以幫很長不好記憶的模組自訂名稱。

使用 123456模組名.變數名模組名.函式名()#如果有取「別名」則改成這樣別名.變數名別名.函式名() 「特定」的變數和函式 引入 但是每次將整個模組的變數和函式引入,會有造成程式運行效能降低的可能性。

因此,還可以針對模組中的特定變數和函式來引入: 12from模組名import變數名from模組名import函式名 使用 不需要在變數和函式前面加模組名.或別名.。

12變數名函式名() 因為簡化了呼叫變數和函式的方式,小心模組中的變數名、函式名和Python內建的變數名、函式名重疊。

Python內建的模組 以下列出一些常用的模組中的函式。

與作業系統相關的os模組 getcwd():回傳目前的工作目錄。

12345importosprint(os.getcwd())#Returnthecurrentworkingdirectory#輸出結果:#/Users/zhengzhurong/Desktop/Python_beginning 也可以寫成如下: 12fromosimportgetcwdprint(getcwd()) 更多請參考:Python文件os模組 與命令行相關的sys模組 prefix:Python安裝位置路徑的前綴。

path:路徑List,用來搜尋模組所在位置。

path[0]是主程式所在的目錄。

其餘元素是Python內建模組的所在位置,為prefix/lib/python_version。

version:Python直譯器的版本號和其他訊息。

1234567891011121314151617fromsysimportprefix,path,versionprint(prefix)print(path)print(version)#/Library/Frameworks/Python.framework/Versions/3.8#['/Users/zhengzhurong/Desktop/Python_beginning','/Library/Frameworks/#Python.framework/Versions/3.8/lib/python38.zip','/Library/Frameworks/#Python.framework/Versions/3.8/lib/python3.8','/Library/Frameworks/#Python.framework/Versions/3.8/lib/python3.8/lib-dynload','/Users/#zhengzhurong/Library/Python/3.8/lib/python/site-packages','/Library/#Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages']#3.8.0(v3.8.0:fa919fdf25,Oct142019,10:23:27)#[Clang6.0(clang-600.0.57)] 更多請參考:Python文件sys模組 與基本運算相關的math模組 fabs(a):取絕對值。

log10(a):以10為底取對數。

1234567frommathimportfabs,log10print(fabs(-5.5))print(log10(1000))#5.5#3.0 更多請參考:Python文件math模組 與隨機選擇相關的random模組 choice(seq):從sequence資料中,隨機選取一個元素。

sequence是可以疊代的資料類型,有字串、List、Tuple等。

sample(seq,n):從sequence資料中,隨機選取n個元素。

回傳List資料。

12345678fromrandomimportchoice,sampledata=(2,5,11,4,7,33)print(choice(data))print(sample(data,2))#7#[4,2] shuffle(list):將可變動的sequence資料(也就是List)中的元素,隨機調換位置。

如果想要調換不可變動的sequence資料中的元素,只能利用sample(seq,n=len(seq))回傳一個新的List。

1234567891011121314fromrandomimportsample,shuffledata=(2,5,11,4,7,33)my_list=[2,4,5,13,6,18]print(my_list)shuffle(my_list)print(my_list)#[2,4,5,13,6,18]#[6,2,18,5,13,4]print(sample(data,len(data)))#利用sample調換不可變動Tuple的元素#[11,33,7,5,4,2] random():不需要傳入任何參數,隨機取得0.0~1.0(不包含)之間的浮點數N。

uniform(a,b):隨機取得介在a和b之間的浮點數N。

會不會包含b則以公式a+(b-a)*random()來決定。

1234567fromrandomimportrandom,uniformprint(random())print(uniform(1.2,5.5))#0.3670324625285356#3.0212954783263894 randint(a,b):隨機取得介在a和b(包含)之間的整數N。

randrange(a,b[,step]):隨機取得介在a和b(不包含)之間的整數N。

可以指定數字間隔。

1234567fromrandomimportrandint,randrangeprint(randint(1,3))print(randrange(1,10,3))#3#7 更多請參考:Python文件random模組 與統計相關的statistics模組 下列函式中,data要是sequence或可疊代的資料。

mean(data):計算data的平均數。

median(data):計算data的中位數。

mode(data):取出現最多次的元素。

stdev(data):計算data的樣本標準差。

12345678910111213fromstatisticsimportmean,median,mode,stdevnums=(2,5,7,10,13,99)print(mean(nums))print(median(nums))colors=["red","blue","blue","red","green","red","red"]print(mode(colors))print(stdev(nums))#22.666666666666668#8.5#red#37.59077901117063 更多請參考:Python文件statistics模組 自定義模組 定義模組很簡單,就是直接建立一個.py檔案,裡面放置自訂的變數或函式即可。

12345678#../my_math.pygrade="A-"defpractice(thing="arithmetic"):print("Practice"+thing)defdoExercises(topic="Trigonometricfunctions"):print("Doexerciseson"+topic) 依照主程式和模組放置位置,需要執行不同的動作才能引入: 「同層」目錄結構 123Python_beginning├main.py└my_math.py 不需要格外的動作,可以直接在主程式main.py中引入。

1234567#../main.pyimportmy_mathprint("Mathgrade:"+my_math.grade)my_math.practice()#Mathgrade:A-#Practicearithmetic 因為如上述提過的Python內建sys模組中的path變數:路徑List,用來搜尋模組所在位置。

path[0]是主程式main.py所在的資料夾,也就是../Python_beginning。

因此可以直接找到my_math模組。

模組在「資料夾」中,屬於下一層 1234Python_beginning├main.py└subject└my_math.py 當我直接引入my_math.py模組,會報錯: 123456789importmy_mathprint("Mathgrade:"+my_math.grade)my_math.practice()#Traceback(mostrecentcalllast):#File"../Python_beginning/main.py",line1,in#importmy_math#ModuleNotFoundError:Nomodulenamed'my_math' 因為在sys.path[0]的位置,也就是../Python_beginning資料夾,找不到my_math模組。

需要在importmy_math之前,自己增加路徑位置,動作如下: 123importsyssys.path.append("./subject")#sys.path.append("subject")#這樣寫也可以 append():在可變動List資料尾端,新增一個元素。

使用他人建置的模組 pip是Python的模組package管理工具,提供了對模組package的查詢、下載、安裝和卸載的功能。

如果你的Python是從官網上面下載,就包含了pip工具。

如果尚未安裝pip工具,請參考下方。

安裝pip 在pip官網中,可以看到安裝的方法。

獲得安裝pip的檔案。

可以使用終端機cd進入某個資料夾,用下方指令碼下載;或是去這裏將整個頁面存在一個.py的檔案中。

1$curlhttps://bootstrap.pypa.io/get-pip.py-oget-pip.py#先下載安裝pip的檔案 curl:抓取網頁到一個檔案中。

-o:必須輸入檔案名,將網頁內容下載到該檔案中。

因為pip會自動被安裝在/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages路徑中,因此get-pip.py檔案儲存在哪裡都無所謂。

使用終端機cd進入get-pip.py所在資料夾,執行安裝pip的檔案。

1$sudopython3get-pip.py#執行安裝pip的檔案 使用pip安裝模組 有了pip工具後,使用它安裝他人建置的模組。

1$pipinstall模組名 參考資料: 彭彭的課程:PythonModule模組的載入與使用



請為這篇文章評分?