【Python基礎入門系列】第06天:Python 模塊和包

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

爲了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文件裏,這樣,每個文件包含的代碼就相對較少,很多編程語言都採用這種組織代碼的方式。在Python中,一個.py文件就稱之爲一個模塊(Module)

先給大家解釋一下模塊、包、庫之間的概念:

  • 模塊(module)其實就是 py 文件,裏面定義了一些函數、類、變量等

  • 包(package)是多個模塊的聚合體形成的文件夾,裏面可以是多個 py 文件,也可以嵌套文件夾

  • 庫是參考其他編程語言的說法,是指完成一定功能的代碼集合,在 Python 中的形式就是模塊和包

下面我們來分開介紹:模塊

 

使用模塊有什麼好處?

最大的好處是大大提高了代碼的可維護性。其次,編寫代碼不必從零開始。當一個模塊編寫完畢,就可以被其他地方引用。我們在編寫程序的時候,也經常引用其他模塊,包括Python內置的模塊和來自第三方的模塊。

使用模塊還可以避免函數名和變量名衝突。相同名字的函數和變量完全可以分別存在不同的模塊中,因此,我們自己在編寫模塊時,不必考慮名字會與其他模塊衝突。但是也要注意,儘量不要與內置函數名字衝突

定義和調用 Python 模塊

下面先來看真實的定義一個 Python 模塊。

定義一個 hello.py 模塊,內容如下:


def sayhello( ):
    print("Hello 學長!")

一般情況下,我們使用 import 語句來引入模塊:


 

import module1[, module2[,... moduleN]]

當解釋器遇到 import 語句,如果模塊在當前的搜索路徑就會被導入。調用的時候使用 模塊名.函數名 來進行調用

以上的示例爲例,我們新建 do.py 文件調用 hello.py 模塊中方法。

do.py 文件內容如下:


# 導入模塊
import hello

# 現在可以調用模塊裏包含的函數了
hello.sayhello()

在 do.py 頁面執行快捷鍵 ctrl+b (sumblime中)

控制檯輸出:Hello 學長!,證明調用 hello.py 中的方法成功。

再來說“包”

 

你也許還想到,如果不同的人編寫的模塊名相同怎麼辦?爲了避免模塊名衝突,Python又引入了按目錄來組織模塊的方法,稱爲包(Package)。

舉個例子,一個abc.py的文件就是一個名字叫abc的模塊,一個xyz.py的文件就是一個名字叫xyz的模塊。

現在,假設我們的abcxyz這兩個模塊名字與其他模塊衝突了,於是我們可以通過包來組織模塊,避免衝突。方法是選擇一個頂層包名,比如mycompany,按照如下目錄存放:


 

mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py


 

包(package)是 Python 中對模塊的更高一級的抽象。

簡單來說,Python 允許用戶把目錄當成模塊看待。這樣一來,目錄中的不同模塊文件,就變成了「包」裏面的子模塊。此外,包目錄下還可以有子目錄,這些子目錄也可以是 Python 包。這種分層,對模塊識別、管理,都是非常有好處的。

特別地,對於一些大型 Python 工具包,內裏可能有成百上千個不同功能的模塊。科學計算領域,SciPy, NumPy, Matplotlib 等第三方工具,都是用包的形式發佈的。

包定義

常見的包層級目錄結構如下:


 

pakageName
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...

包路徑下必須存在 __init__.py 文件。

使用 Python 包

Python 包的使用和模塊的使用類似,下面是導入的語法:


 

import 包名.包名.模塊名

 

 

總結

 

本節給大家介紹了 Python  模塊和包的使用,模塊是一組Python代碼的集合,可以使用其他模塊,也可以被其他模塊使用。創建自己的模塊時,要注意:

  • 模塊名要遵循Python變量命名規範,不要使用中文、特殊字符;

  • 模塊名不要和系統模塊名衝突,最好先查看系統是否已存在該模塊,

    檢查方法是在Python交互環境執行import abc,若成功則說明系統存在此模塊。

 

參考:

https://www.liaoxuefeng.com/wiki/1016959663602400/1017454145014176

https://www.python.org/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章