模塊和包

在計算機程序的開發過程當中,隨着程序代碼越寫越多,在一個文件裏代碼就會愈來愈長,愈來愈不容易維護web

爲了編寫可維護的代碼,咱們把不少函數分組,分別放到不一樣的文件裏
這樣,每一個文件包含的代碼就相對較少,不少編程語言都採用這種組織代碼的方式
在Python中,一個.py文件就稱之爲一個模塊(Module),一個abc.py的文件就是一個名字叫abc的模塊,一個xyz.py的文件就是一個名字叫xyz的模塊
模塊是一組Python代碼的集合,可使用其餘模塊,也能夠被其餘模塊使用編程

使用模塊的好處
  1) 大大提升了代碼的可維護性
  2) 利用別人寫好的模塊,使得編寫代碼沒必要從零開始,如Python內置的模塊和來自第三方的模塊
  3) 使用模塊還能夠避免函數名和變量名衝突
   相同名字的函數和變量徹底能夠分別存在不一樣的模塊中
   所以,在編寫模塊時,沒必要考慮名字會與其餘模塊衝突,但也要注意,儘可能不要與內置函數名字衝突

關於包(Package)
  爲了不模塊名衝突,Python又引入了按目錄來組織模塊的方法,稱爲包(Package)
  引入了包之後,只要頂層的包名不與別人衝突,那全部模塊都不會與別人衝突
  假設abc和xyz這兩個模塊名字與其餘模塊衝突了,因而可經過包來組織模塊,避免衝突
  方法是選擇一個頂層包名,好比mycompany,這樣,abc.py模塊的名字就變成了mycompany.abc,xyz.py的模塊名變成了mycompany.xyz
  按照以下目錄存放:
    mycompany
    ├─ __init__.py
    ├─ abc.py
    └─ xyz.py編程語言


  關於__init__.py文件
    每個包目錄下面都會有一個__init__.py的文件,該文件是必須存在的,不然,Python就把這個目錄當成普通目錄,而不是一個包
    __init__.py能夠是空文件,也能夠有Python代碼,由於__init__.py自己就是一個模塊,而它的模塊名就是mycompany,即包名函數


  包內能夠有多級目錄,組成多級層次的包結構
    按照以下目錄存放:
      mycompany
      ├─ web
      │ ├─ __init__.py
      │ ├─ utils.py
      │ └─ www.py
      ├─ __init__.py
      ├─ abc.py
      └─ xyz.py
  www.py文件的模塊名就是mycompany.web.www,兩個文件utils.py的模塊名分別是mycompany.utils和mycompany.web.utils
  mycompany.web也是一個模塊,就是mycompany.web下的__init__.py文件開發

注意
  1) 模塊名要遵循Python變量命名規範,不要使用中文、特殊字符
  2) 模塊名不要和系統模塊名衝突,例如,系統自帶的sys模塊,本身的模塊就不可命名爲sys.py,不然將沒法導入系統自帶的sys模塊
   最好先查看系統是否已存在該模塊
   檢查方法是在Python交互環境執行import 模塊名,若成功則說明系統存在此模塊it

相關文章
相關標籤/搜索