【Python基础入门系列】第06天:Python 模块和包
? ? ? ??在計算機程序的開發(fā)過程中,隨著程序代碼越寫越多,在一個文件里代碼就會越來越長,越來越不容易維護。
為了編寫可維護的代碼,我們把很多函數(shù)分組,分別放到不同的文件里,這樣,每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在Python中,一個.py文件就稱之為一個模塊(Module)。
先給大家解釋一下模塊、包、庫之間的概念:
-
模塊(module)其實就是?py 文件,里面定義了一些函數(shù)、類、變量等
-
包(package)是多個模塊的聚合體形成的文件夾,里面可以是多個 py 文件,也可以嵌套文件夾
-
庫是參考其他編程語言的說法,是指完成一定功能的代碼集合,在 Python 中的形式就是模塊和包
下面我們來分開介紹:模塊
?
使用模塊有什么好處?
最大的好處是大大提高了代碼的可維護性。其次,編寫代碼不必從零開始。當(dāng)一個模塊編寫完畢,就可以被其他地方引用。我們在編寫程序的時候,也經(jīng)常引用其他模塊,包括Python內(nèi)置的模塊和來自第三方的模塊。
使用模塊還可以避免函數(shù)名和變量名沖突。相同名字的函數(shù)和變量完全可以分別存在不同的模塊中,因此,我們自己在編寫模塊時,不必考慮名字會與其他模塊沖突。但是也要注意,盡量不要與內(nèi)置函數(shù)名字沖突
定義和調(diào)用 Python 模塊
下面先來看真實的定義一個 Python 模塊。
定義一個 hello.py 模塊,內(nèi)容如下:
def sayhello( ):print("Hello 學(xué)長!")一般情況下,我們使用?import 語句來引入模塊:
import module1[, module2[,... moduleN]]
當(dāng)解釋器遇到 import 語句,如果模塊在當(dāng)前的搜索路徑就會被導(dǎo)入。調(diào)用的時候使用?模塊名.函數(shù)名?來進(jìn)行調(diào)用
以上的示例為例,我們新建 do.py 文件調(diào)用 hello.py 模塊中方法。
do.py 文件內(nèi)容如下:
# 導(dǎo)入模塊 import hello# 現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了 hello.sayhello()在 do.py 頁面執(zhí)行快捷鍵 ctrl+b (sumblime中)
控制臺輸出:Hello 學(xué)長!,證明調(diào)用 hello.py 中的方法成功。
再來說“包”
?
你也許還想到,如果不同的人編寫的模塊名相同怎么辦?為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)。
舉個例子,一個abc.py的文件就是一個名字叫abc的模塊,一個xyz.py的文件就是一個名字叫xyz的模塊。
現(xiàn)在,假設(shè)我們的abc和xyz這兩個模塊名字與其他模塊沖突了,于是我們可以通過包來組織模塊,避免沖突。方法是選擇一個頂層包名,比如mycompany,按照如下目錄存放:
mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py
?
包(package)是 Python 中對模塊的更高一級的抽象。
簡單來說,Python 允許用戶把目錄當(dāng)成模塊看待。這樣一來,目錄中的不同模塊文件,就變成了「包」里面的子模塊。此外,包目錄下還可以有子目錄,這些子目錄也可以是 Python 包。這種分層,對模塊識別、管理,都是非常有好處的。
特別地,對于一些大型 Python 工具包,內(nèi)里可能有成百上千個不同功能的模塊。科學(xué)計算領(lǐng)域,SciPy, NumPy, Matplotlib 等第三方工具,都是用包的形式發(fā)布的。
包定義
常見的包層級目錄結(jié)構(gòu)如下:
pakageName
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...
包路徑下必須存在?__init__.py?文件。
使用 Python 包
Python 包的使用和模塊的使用類似,下面是導(dǎo)入的語法:
import 包名.包名.模塊名
?
?
總結(jié)
?
本節(jié)給大家介紹了 Python ?模塊和包的使用,模塊是一組Python代碼的集合,可以使用其他模塊,也可以被其他模塊使用。創(chuàng)建自己的模塊時,要注意:
-
模塊名要遵循Python變量命名規(guī)范,不要使用中文、特殊字符;
-
模塊名不要和系統(tǒng)模塊名沖突,最好先查看系統(tǒng)是否已存在該模塊,
檢查方法是在Python交互環(huán)境執(zhí)行import abc,若成功則說明系統(tǒng)存在此模塊。
?
參考:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017454145014176
https://www.python.org/
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的【Python基础入门系列】第06天:Python 模块和包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈希表实现电话号码查找系统
- 下一篇: websocket python爬虫_p