在計算機程序的開發過程當中,隨着程序代碼越寫越多,在一個文件裏代碼就會愈來愈長,愈來愈不容易維護。python
爲了編寫可維護的代碼,咱們把不少函數分組,分別放到不一樣的文件裏,這樣,每一個文件包含的代碼就相對較少了,不少編程語言都採用這種組織代碼的形式。編程
在Python中,以個.py文件就能夠稱之爲一個模塊(Module)。編程語言
一、最大的好處是大大提升了代碼的可維護性。其次,編寫代碼沒必要從零開始。當一個模塊編寫完畢,就能夠被其餘地方引用。咱們在編寫程序的時候,也常常引用其餘模塊,包括Python內置的模塊和來自第三方的模塊。函數
二、使用模塊還能夠避免函數名和變量名衝突。每一個模塊有獨立的命名空間,所以相同名字的函數和變量徹底能夠分別存在不一樣的模塊中,因此,咱們本身在編寫模塊時,沒必要考慮名字會與其餘模塊衝突。code
模塊分爲三種:ip
一、內置標準模塊(又稱標準庫)執行help(‘modules’)查看全部python自帶模塊列表。開發
二、第三方開源模塊,可經過pip install 模塊名
聯網安裝。it
三、自定義模塊。pip
import module_a #導入 from module import xx from module.xx.xx import xx as rename #導入後重命令 from module.xx.xx import * #導入一個模塊下的全部方法,不建議使用 module_a.xxx #調用
注:模塊一旦被調用,即至關於執行了另一個py文件裏的代碼。io
這個最簡單,建立一個.py文件,就能夠稱之爲模塊,就能夠在另一個程序裏導入。
你會發現,本身寫的模塊只能在當前路徑下的程序裏才能導入,換一個目錄再導入本身的模塊就報錯說找不到了,這是爲何?
這與導入模塊的查找路徑有關:
import sys print(sys.path)
輸出(注意:上述代碼在不一樣的電腦可能輸出的不太同樣)
['', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']
你導入一個模塊時,Python解釋器會按照上面列表順序依次到每一個目錄下去匹配你要導入的模塊名,只要在一個目錄下匹配到了該模塊名,就馬上導入,再也不繼續日後找。
注:列表第一個元素爲空,即表明當前目錄,因此你本身定義的模塊在當前目錄會被優先導入。
咱們本身建立的模塊若想在任何地方都能調用,那就得確保你的模塊文件至少在模塊路徑的查找列表中。
咱們通常把本身寫的模塊放在一個帶有「site-packages」字樣的目錄裏,咱們從網上下載安裝的各類第三方的模塊通常都放在這個目錄。