爲了編寫可維護的代碼,咱們把不少函數分組,分別放到不一樣的文件裏,這樣,每一個文件包含的代碼就相對較少,不少編程語言都採用這種組織代碼的方式。在Python中,一個.py文件就稱之爲一個模塊(Module)。web
使用模塊最大的好處是大大提升了代碼的可維護性。其次,編寫代碼沒必要從零開始。當一個模塊編寫完畢,就能夠被其餘地方引用。咱們在編寫程序的時候,也常常引用其餘模塊,包括Python內置的模塊和來自第三方的模塊。編程
使用模塊還能夠避免函數名和變量名衝突。相同名字的函數和變量徹底能夠分別存在不一樣的模塊中,所以,咱們本身在編寫模塊時,沒必要考慮名字會與其餘模塊衝突。可是也要注意,儘可能不要與內置函數名字衝突。編程語言
若是不一樣的人編寫的模塊名相同怎麼辦?爲了不模塊名衝突,Python又引入了按目錄來組織模塊的方法,稱爲包(Package)。例如:將一個名叫auth.py文件存放在pack目錄下。同時pack目錄下有一個__init__.py文件(該文件默認是一個空文件),那麼該pack就稱爲一個包。auth模塊名就變爲pack.auth。目錄能夠有多級,好比web.pack.auth。即web目錄下的pack目錄下的auth.py文件。函數
import time #調用time模塊 from time import sleep,time #調用time模塊的 sleep和time方法 from time import * #調用time模塊中的全部方法(不推薦這麼用) from time import sleep as sleep2 #調用time模塊的sleep方法,並將此方法設置別名sleep2
from web.web2 import logger #調用web目錄下的web2包下的logger模塊 from web.web2.logger import log #調用web目錄下的web2包下的logger模塊 的log方法 import web #調用web包,實際是執行了web包下的__init__.py文件
當咱們在命令行運行一個模塊文件時,Python解釋器把一個特殊變量__name__置爲__main__,而若是在其餘地方導入該模塊時,if判斷將失敗,所以,這種if測試可讓一個模塊經過命令行運行時執行一些額外的代碼,最多見的就是運行測試。測試