1、模塊基礎html
一、模塊python
自我包含,且有組織的代碼片斷就是模塊web
模塊是Pyhon最高級別的程序組織單元,它將程序代碼和數據封裝起來以便重用。實際的角度,模塊每每對應Python程序文件。
每一個文件都是一個模塊,而且模塊導入其餘模塊以後就可使用導入模塊定義的變量名。模塊能夠由兩個語句和一個重要的內置函數進行處理。
import: 使客戶端(導入者)以一個總體獲取一個模塊。
from:允許客戶端從一個模塊文件中獲取特定的變量名。
reload:在不停止Python程序的狀況下,提供了一個從新載入模塊文件代碼的方法。編程參考:http://ipseek.blog.51cto.com/1041109/795782函數
二、名稱空間spa
一個名稱空間就是從名稱到對象的關係隱射集合。code
每個模塊都定義的本身惟一的名稱空間,如:orm
import s1,s2#s1.py,s2.pys1.foo() s2.bar() s1.bar() #因爲每一個模塊都有惟一的名稱空間,即便屬性相同也不會發生衝突
向名稱空間添加名稱的操做過程涉及綁定標識符到指定對象的操做(以及給對象的引用計數加1)。htm
三、搜索路徑和路徑搜索對象
模塊的導入須要叫作「路徑搜索」的過程。
搜索路徑:查找一組目錄
路徑搜索:查找某個文件的操做
ImportError: No module named myModule
這種錯誤就是說:模塊不在搜索路徑裏,從而致使路徑搜索失敗!
導入模塊時,不帶模塊的後綴名,好比.py
Python搜索模塊的路徑:
1)、程序的主目錄
2)、PTYHONPATH目錄(若是已經進行了設置)
3)、標準鏈接庫目錄(通常在/usr/local/lib/python2.X/)
4)、任何的.pth文件的內容(若是存在的話).新功能,容許用戶把有效果的目錄添加到模塊搜索路徑中去
.pth後綴的文本文件中一行一行的地列出目錄。
這四個組建組合起來就變成了sys.path了,
>>> import sys>>> sys.path 導入時,Python會自動由左到右搜索這個列表中每一個目錄。
2、模塊導入
一、import語句
推薦:
import放在程序前面,且按照Python標準庫模塊、Python第三方模塊、自定義模塊的順序從上到下排開。
二、from-import語句
能夠導入模塊中指定屬性:from module import name1[,nam2[,...nameN]]
注意:
(1)、導入可以使用\進行換行,
如:from module import nam1,name2,\
name3,name4....
(2)、不推薦from module import *
(3)、使用as更換名稱:
from module import name1 as name2
三、模塊導入的特徵
(1)、載入時執行模塊,也就是導入模塊的頂層代碼將會被執行,一般包括該模塊內全局變量、類和函數的聲明。咱們儘量多的把代碼封裝到函數中,這是良好的模塊編程習慣。
(2)、一個模塊可被導入(import)屢次,可是隻加載(load)一次.
四、模塊內建函數
(1)、__import__():導入模塊的函數
import語句實際上調用__import__()函數
若是咱們有一個testa.py文件,咱們能夠用module=__import__('testa')來導入它。這樣能夠用module.屬性來使用testa.py中的屬性
其餘見書
3、包
一、包的概念
包是一個有層次的文件目錄結構,由模塊和子包組成。
二、解析包機制:
每個.py文件稱爲一個module,module之間能夠互相導入
module能夠定義在包裏面.Python定義包的方式稍微有點古怪,假設咱們有一個parent文件夾,該文件夾有一個child子文件夾.child中有一個module a.py . 如何讓Python知道這個文件層次結構?很簡單,每一個目錄都放一個名爲_init
_.py 的文件.該文件內容能夠爲空.這個層次結構同上:
參考:http://huangliangfeixu.blog.163.com/blog/static/18974706220112741040442/
三、python中__init__.py文件的做用
python的每一個模塊的包中,都有一個__init__.py文件,有了這個文件,咱們才能導入這個目錄下的module。
那麼,__init__.py還有什麼別的功能呢?
其實,__init__.py裏面仍是能夠有內容的,咱們在導入一個包時,實際上導入了它的__init__.py文件。
四、導入
參考上面的圖片
import web.web_catchimport web.child_web.demofrom web.child_web import demo