1. 程式人生 > >python-16:模組 包

python-16:模組 包

Python 模組

模組定義

    隨著程式越來越龐大,需要分隔成幾個檔案;也需要能在不同檔案中複用函式、類和變數,而不是拷貝程式碼。為了滿足這些需要,Python提供了模組。

    簡單來說,模組就是一個儲存了Python程式碼的檔案(.py 檔案)檔名 就是 模組名 (modulename)加上  .py 字尾。

    模組能定義函式,類和變數。模組裡也能包含可執行的程式碼。模組的模組名(作為一個字串)可以由全域性變數 __name __ 得到。

             函式名,模組名都可看著變數名。

匯入模組

    1、import modulename1 [, modulename2[,... modulenameN]  可通過 import 語句匯入一個或多個模組,模組匯入命令通常放在指令碼頂端。

             2、from packegename import modulename1[, name2[, ... nameN]]  從模組中匯入一個或多個指定的部分到當前名稱空間中

             3、from packegename

import *   匯入模組中的所有定義(除了以下劃線_命名的),這種宣告不該被過多地使用。

             注:import modulename,實質:1、執行modulename.py檔案(實質,將此檔案程式碼全部匯入);2、引入變數名(modulename,模組名就是變數名),故有,modulename.function()

             注:pagegename,實質是一個資料夾,但包含了一個__init__.py檔案,

            注:執行檔案和引用檔案,一般bin.py是一個程式入口檔案,bin.py中的import modulename,modulename.py就是一個引用檔案

 

定位模組

    當你匯入一個模組,Python解析器對模組位置的搜尋順序是: 通過 import sys  sys.path檢視,

      1. 當前目錄,(指的是執行檔案的當前目錄,即執行的那個檔案的目錄)

      2. 如果不在當前目錄,Python則搜尋在shell變數PYTHONPATH下的每個目錄

      3. 如果都找不到,Python會察看預設路徑。UNIX下,預設路徑一般為/usr/local/lib/python/

    模組搜尋路徑儲存在system模組的sys.path變數中。變數裡包含當前目錄,PYTHONPATH和由安裝過程決定的預設目錄。

             

 執行本質 

  #1 import test

#2 from test import add 

無論1還是2,首先通過sys.path找到test.py,然後執行test指令碼(全部執行),區別是1會將test這個變數名載入到名字空間,而2只會將add這個變數名載入進來。  

import只能匯入模組,不能匯入模組中的物件(類、函式、變數等)。如一個模組A(A.py)中有個函式getName,另一個模組不能通過import A.getName將getName匯入到本模組,只能用import A。如果想只匯入特定的類、函式、變數則用from A import getName即可。

呼叫包實質就是執行包下的__init__.py檔案,包之間的引用,用點操作,如:from web.web1.web2 import test

     

if __name__=='__main__':有兩層意思:1、在被調模組中用,是為了模組的測試;2、在主程式(bin.py)中用,是為了防止被其它使用者呼叫自己的主程式