python 入門筆記 (模塊)

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
相關文章
相關標籤/搜索