其實前面都說過的,不過還是系統的再說一次,相信學到這,大部分都被搞忘了吧,所以再提一下,也為後面的博文做鋪墊
在程式的開發過程中,隨著程式**越寫越多,在乙個檔案裡**就會越來越長,越來越不容易維護,不斷的滾雪球式的增長。為了維護好**,我們把很多類和函式分組,分別放到不同的python可讀的py檔案裡,這樣就解決了問題,讓主程式檔案的**減少,很多程式語言都採用這種組織**的方式,在html標籤裡也一樣,把樣式寫入css裡,要用的使用再鏈結css樣式表就行。而這裡的乙個.py檔案就稱之為乙個模組(module)
模組也有另乙個名稱,庫,庫又分標準庫和第三方庫,而內建的庫(在安裝python時就已經帶有的庫)或者說模組就是標準庫,而需要使用pip命令安裝的庫就叫第三方庫。
因為python是開源的,pypi等各大社群裡也有很多能人志士不斷的開發整合各色各樣的庫(模組)。
1)而內建的庫怎麼檢視呢?
我們知道檢視內建方法是用dir(__builtins__),檢視庫又是什麼呢?借助sys模組
(只擷取了部分)
sys.modules方法就可以檢視所有的內建庫,會列出詳細的庫名和庫的路徑,當然如果你只想看庫名,可以使用命令sys.modules.keys()
(只擷取了部分呢)
也可以使用help()函式檢視:
(只擷取了部分)
上面有方法是檢視所有已存在的模組的,自己去研究了
2)檢視第三方模組,在終端介面,使用pip list或者pip freeze檢視
使用命令匯入:
import xx
例:
from xx import xx
例:當匯入模組下的方法名和其他模組的方法名重複,可以使用as取個別名。
比如math模組裡的sqrt和cmath模組裡的sqrt方法,例:
也可以使用from xx import * 匯入模組裡的所有函式,但此法只能匯入xx的類裡__init__下的方法,如果是隱藏方法的話使用命令from xx import *則不能被匯入
什麼是命名空間,比如上面的命令from math import sqrt 中的math就是命名空間,每個空間相互獨立,互不影響,所以才會存在不同模組有相同方法名
最大的好處是大大提高了**的可維護性。其次,編寫**不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用。我們在編寫程式的時候,也經常引用其他模組,包括python內建的模組和來自第三方的模組。
使用模組還可以避免函式名和變數名衝突。相同名字的函式和變數完全可以分別存在不同的模組中,因此,我們自己在編寫模組時,不必考慮名字會與其他模組衝突。但是也要注意,盡量不要與內建函式名字衝突。
我們在很多時候都會使用這段**,其實這個我前面也說過的。
主程式:指當前模組的主體程式,並不是__name__。無論當前模組是被別的模組匯入還是作為指令碼直接執行,都會執行這部分**
__name__,指模組應該如何被載入,如果模組是被另乙個py檔案匯入,__name__的值就是py檔名。如果模組是直接執行,__name__的值就是自身,即__main__,本模組或者叫主體程式
注意:
所有的模組都有能力執行**,只是會不會返回結果而已。建議做法是,除了真正需要匯入模組才能執行的功能外,一般功能盡量自定義函式解決;
__name__==』__main可以用來做模組測試
python入門靈魂5問
對於剛接觸python程式設計或者想學習python自動化的人來說,基本都會有以下python入門靈魂5問 python學習路線,python教程,python學哪些,python怎麼學,python學到什麼程度?需要學習哪些內容才能征服python這條蟒蛇呢?前言 python分為2.x和3.x之...
Python修煉之路 異常
在程式出現bug時一般不會將錯誤資訊直接顯示給使用者,而是可以自定義顯示內容或處理。常見異常 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 importerror 無法引入模組或包 基本上是路徑問...
python修煉計畫 從基本學起1
學習一門熱門語言 計算機語言都是從helloworld開始 mac或linux 下自帶python,windows需要安裝,具體安裝步驟問度娘。建立python 指令碼如下,vim helloword.py usr bin python coding utf 8 剽悍的代 碼不需要解析 解析也沒用 ...