1,模塊定義
python
一般狀況下,當咱們的程序代碼太多的時候,就必需要使用一種方式來組織咱們的代碼。這樣作能夠提升代碼的複用率,也可使程序更加的結構化,有助於後期的擴展和維護。那這種方式一般狀況咱們的作法是把代碼分割成函數,或者組織成類。
linux
可是當有不少不少類或者函數的時候,又可能會出現命名衝突,因而就引入了命名空間的概念。windows
命名空間是個大的概念,在各類語言的實現方式不同。socket
在PHP中就直接叫作命名空間,劃分方式是經過文件夾的名稱和路徑。函數
在Java中稱之爲包,劃分方式也是經過文件夾的名稱和路徑。工具
那麼,在Python中,一樣也叫作包,固然了,劃分方式也是採用文件夾名稱和路徑,Python和Java不一樣之處在於Python要求每一個包下面必需要包含一個叫「__init__.py」的文件,無論裏面有沒有內容!spa
那麼什麼是模塊呢?命令行
Python中,任意的一個「.py」文件均可以看作是一個模塊。不過,咱們當前討論的模塊是組織在包中的,就像下面這樣:ip
上面的案例中,定義了兩個包 iopackage 和 socketpackage,每一個包下面含有兩個模塊。作用域
爲何是兩個?由於咱們說在包中每一個「.py」文件就是一個模塊,因此「__init__.py」這個文件,雖然特殊,可是實際上它也是一個模塊。
2,使用模塊
模塊的使用,須要分兩種狀況說明。
第一種:沒有包的時候,怎麼使用模塊?
第二種:有包的時候,怎麼使用模塊?
能夠看到,模塊的導入,主要使用 import 關鍵字。若是,你的模塊位於某一個包中,則須要使用 from 關鍵字來通知 python 是從那個包中來導入那個模塊。
2.1 import 補充
一般狀況下,當使用 import pk_name 的時候,導入的實際上是 __init__.py 模板,那麼其它模塊式不可用的。
若是你要使用包中其它的模塊,則就須要採用 from pk_name import module_name 這種形式,或者給它起個別名,這樣之後就可使用這個別名來引用到模塊:from pk_name import module_name as alise_module_name
固然,你也可使用 from pk_name import * 可是這個須要在模塊中作一些配置,這個後面【模塊探究】會說到。
3,模塊的路徑
當使用 import 導入模塊的時候,python會根據「環境變量」的路徑來搜尋模塊所在的位置,找到以後就會把它引入到當前的位置,並且只引入一次!在引入以後,會生成一個 .pyc 的文件,該文件是真正的模塊文件的一個編譯後的版本,python會直接使用它,固然刪除它對原模塊文件沒有任何的影響,在必要的時候,python仍是會去重建它。
如今,來打印一下 python 的環境變量的路徑:
能夠看到,python 在上面列出來的全部的目錄中去尋找對應的模塊文件,當有些時候,你可能須要去更改一下這個值,以便python可以正確的找到你的模塊(雖然不提倡這麼作),就像下面這樣:
4,安裝第三方模塊
python有一種稱謂叫作「自帶電池」,說的就是python中有各類各樣的第三方模塊。這些模塊可使你的開發變的很容易。
那在使用一個三方模塊以前,仍是要先安裝它。
python 中安裝第三方模塊式經過 setuptools 這個工具完成的,目前封裝了 setuptools 包管理工具備:easy_install 和 pip,目前官方推薦使用的是 pip。
若是你是使用 linux 系統那麼,安裝 pip 這個步驟就能夠跳過。若是你是使用 windows 那麼在安裝 python 的時候請確保勾選了 pip 和 add python.exe to path。
那如今,咱們使用的是 easy_install來安裝,因此仍是要先安裝一下 easy_install,
打開連接:https://pypi.python.org/pypi/setuptools#windows
找到對應的:
右擊連接另存爲,而後在命令行下執行:
安裝成功,就是這樣子:
運行: easy_install 若是,提示命令不存在,則須要把 「F:\Python27\Scripts」 加入到環境變量中。
而後咱們來安裝一個地三方包:Python Imaging Library 是python下一個很是強大的圖像處理包。
全部的 python 包,都會在 https://pypi.python.org/pypi 這裏進行註冊,你能夠從裏面搜尋有用的包。
咱們要安裝的這個包的安裝名稱叫:PIL ,所以運行命令:easy_install PIL
當報錯以下的時候:你應該去給定的連接的地方,先下載並安裝一下vc9,用來編譯python包。
當安裝 PIL 成功以後,就能夠在程序中使用它。
那麼如何使用它呢?先得看看它有什麼!
5,模塊探究
探究的模塊,這裏以上面一直用到,可是沒對它作解釋的模塊「pprint」來作演示。
首先,經過 dir 函數,能夠看到一個模塊的結構,就像是這樣:
首先,咱們看到經過 dir 函數,打印出來不少的字符串信息,固然也就是變量或者函數信息。
那有些變量在前面加了「單下劃線」,而有的再先後都加了「雙下劃線」,而有些則什麼都沒有加。
在 python 中,經過變量名這種特殊的寫法,來設置變量的「做用域」。
約定俗稱的是:先後都有「雙下劃線」的變量,具備特殊的意義,在python中可能會做爲關鍵字採用,所以不建議開發者去這麼定義變量。前面帶「單下劃線」的變量,表示該變量的做用範圍僅限在當前模塊中,開發者不該該在包的外面經過相似「moduleName.varName」的形式來訪問它,那這裏不該該並非表明不能。其它的變量則表示屬於公共的變量,沒有「限制」。
變量「__all__」表示該模塊中,當使用 from pk_name import * 這種方式導入包的時候,有哪些方法能夠被導入。
變量「__file__」表示該模塊的路徑
變量「__doc__」則是該模塊的一些描述信息
如今,我在對應的「__file__」目錄下,找到 pprint.py 這個文件,截圖以下:
那在使用 模塊 以前 ,仍是應該先去看一下模塊的相關說明以及相關可調用的方法以及對應方法的說明,這樣使用起來就沒有那麼陌生了!
------------------------------------------------------華麗的分割線-------------------------------------------------
人性一點兒,笑個 16 像素的 ^_^