👳前言
這是新手教程的第四期了,前面已經出過了Python的基礎入門、面向物件編程和正則三期,今天的內容是Python的模塊與包,

如果你還沒有看過前面的教程,有時間可以回去看一下,歡迎訂閱我的專欄,這個系列的文章都會放在專欄里面,學完你就能無障礙進階Python的任何方向,
Python新手入門教程專欄
模塊與包在Python當中使用得不可謂不頻繁,Python之所以代碼量少、開發速度快,模塊與包占據了非常大的原因,這也是新手在進階爬蟲、資料分析、web開發等方向必須掌握的技能,
文章目錄
- 👳前言
- 👳一、模塊
- (一)定義
- (二)模塊匯入
- (三)定義別名
- (四)自定義模塊
- (五)模塊的測驗
- 👳二、包
- (一)定義
- (二)**包的創建**
- (三)包的匯入
- (四)包的使用
- 👳三、模塊與包的作用
- 👳四、第三方庫的安裝
- 1.通過pip安裝
- 2.通過Pycharm安裝
- 3.通過渠道下載.whl檔案安裝
- 👳結語
👳一、模塊
(一)定義
模塊指的是Python的程式檔案(源檔案),模塊的檔案名就是模塊名加上.py,里面包含了Python物件定義和Python陳述句,模塊包含了定義函式、類和執行代碼等等,一般情況下不要去修改模塊,以免模塊失效,
(二)模塊匯入
Python中允許匯入的形式來進行模塊呼叫,Python中的模塊也是物件,模塊中定義的所有全域變數,匯入后都成為模塊的屬性,
1.語法1: import 模塊名
如果要匯入多個模塊,可以只用1個import來匯入多個模塊,多個模塊之間用逗號隔開即可,但是在Python的PEP8風格里面,不建議這么做,所以要匯入幾個模塊,就寫幾個import來進行挨個匯入,
例子:匯入math模塊并呼叫sqrt()開平方的功能對9進行開平方
import math
num = math.sqrt(9)
print(num)
輸出結果:
3.0
提示一下,在Python中進行運算操作默認回傳的是float型別,所以是3.0,
2.語法2: from 模塊名 import 功能1,功能2
注意這里的功能后面不加括號,
例子:匯入math模塊并呼叫sqrt()開平方的功能對9進行開平方
from math import sqrt
num = sqrt(9)
print(num)
輸出結果:
3.0
3.語法3:from 模塊名 import
一般情況下,這個語法可以匯入模塊的所有功能,當你要用某個模塊的多個功能的時候,就不用挨個寫了,這里我就不舉例了,都是一樣的,
注意點:
這個方式并非在所有情況下都能匯入模塊中的所有功能,
如果模塊中有__all__=["功能1","功能2"]這樣的宣告,
那么匯入的模塊只能用功能1和功能2,
如果模塊中還有功能3等等功能,但是沒有在__all__=[串列]中宣告,則無法呼叫,
例子:(這個例子需要看完下面的自定義模塊才看得懂)
新建了1個叫module1的模塊,模塊代碼有2個功能:
def fun1() : #實作a+b并輸出結果
print("fun1")
def fun2() : #實作a+b并輸出結果
print("fun2")
__all__ = ["fun1"] #宣告只能呼叫fun1()
在另一個Python檔案中用語法3的方式匯入模塊中的所有方法:
from module1 import *
fun1()
fun2()
執行結果只列印出來fun1,然后就報錯提示fun2()沒有被定義,無法識別,這就是因為
在module1中用__all__宣告了可呼叫的方法只有fun1(),
(三)定義別名
有的模塊或者模塊內的功能名字比較長,多次使用的時候不方便,可以進行自定義模塊或者功能的名字,
1.模塊自定義別名: import 模塊名 as 別名
例子:自定義time模塊為別名t并使用,
import time as t
t.sleep(3) #延遲三秒
print("hello world")
程式執行3秒后輸出:
hello world
2.功能自定義別名: from 模塊名 import 功能名 as 別名
例子:匯入time模塊并自定義sleep()功能為s這個名字
from time import sleep as s
s(5) #延時5秒
print("hello world")
程式執行5秒后輸出:
hello world
(四)自定義模塊
每個人都能生成自定義模塊來進行呼叫,自定義模塊就是Python檔案,我們寫代碼時創建的Python檔案就相當于1個模塊,
注意點:被呼叫的模塊盡量放在當前Python檔案相同目錄下,否則匯入時要宣告所在檔案夾才能匯入,
例子:自定義1個模塊,在另一個Python檔案中進行呼叫,
新建1個名為module1的Python檔案,代碼如下:
def fun1(a,b) : #實作a+b并輸出結果
print(a+b)
相同目錄下新建另一個Python檔案,呼叫module1.py這個模塊:
import module1
module1.fun1(20,30)
運行當前Python檔案結果:
50
(五)模塊的測驗
每個模塊匯入的時候都默認被執行一遍,但同時在模塊內部又存在著很多的內部測驗代碼,為了避免匯入模塊時執行了模塊內部的測驗代碼,于是就牽扯到一個方法:
很多模塊在內部都有測驗方法:
if __name__ == "__main__":
代碼1
這個方法能夠實作一個功能,在模塊中執行的話,就會執行代碼1的代碼,在其他檔案匯入該模塊的時候,則不會執行代碼1的代碼,所以一般模塊內部的測驗都放在了代碼1當中,
為什么?神奇的點就在于__name__,它在當前檔案中執行的結果是__main__,在其他檔案匯入時執行的結果是模塊名,所以利用這一點,用上if陳述句就能判斷模塊執行到底是在當前檔案執行還是被匯入執行,
舉例:
新建1個Python叫module1,作為模塊,代碼如下:
print(__name__) #列印__name__
執行結果:
__main__
再新建1個Python檔案,匯入剛才建好的module1.py模塊:
import module1
執行結果:
module1
在當前檔案的執行和被匯入時執行,結果是不一樣的,所以它成為了模塊的內部測驗方法,
注意點:在自定義的模塊中,不建議寫while循壞,不然匯入的程序中一直在執行模塊里面的while循壞,可能會跳不出來,也就是一直在匯入模塊,其他代碼執行不到,
👳二、包
(一)定義
包就是將有聯系的模塊放在同一個檔案夾下,并且該檔案夾里有“__init__.py”這個檔案,這個檔案夾就叫做包,
包的特征:
1.包也是物件
2.必須有__init__.py檔案
3.__init__.py檔案是包的構造方法,控制著包的匯入行為,一般是個空包
4.包里面不僅可以有模塊,還可以有子包
(二)包的創建
在Pycharm軟體中新建1個專案檔案,創建完成后,打開Pycharm創建1個專案檔案夾→點擊檔案夾→右鍵彈出選項→New→Python Package→完成創建,創建的新檔案夾就是包,里面自動創建了init檔案,

(三)包的匯入
常規匯入方法主要有2種,
方法1:import 包名.模塊名.目標
方法2:import 包名.子包.模塊名.目標
這里所說的目標可以是變數、函式等等物件,具體的在下面會講到,
(四)包的使用
使用形式1:常規使用1
import 包名.模塊名
包名.模塊名.功能
舉例:創建1個包,在另一個.py檔案中使用,要求.py檔案不包含在創建的包內,
步驟1,打開Pycharm新建一個專案,創建1個包,命名為demo,包里面新建1個.py檔案,命名為my_module,代碼如下:
a = 100
def fun1():
print("這是1個包")
步驟2,打開另1個.py檔案,匯入已創建的包
import demo.my_module
print(demo.my_module.a)
demo.my_module.fun1()
執行結果:
100
這是1個包
使用形式2:常規使用2
from 包名 import 模塊名
模塊名.功能
模塊名.變數
舉例:我沿用上面已經創建好的demo包,直接在步驟2中修改代碼,用這個新方式去匯入包并使用,
from demo import my_module
print(my_module.a)
my_module.fun1()
執行結果是一樣的:
100
這是1個包
使用形式3:另起別名并使用
import 包名.模塊名 as 別名
別名.功能
別名.變數
上面使用形式1中可能有人會發現,匯入模塊后的使用不太方便,又要包名又要模塊名的,能不能簡單點?當然可以,直接給包里的模塊另起1個縮短的別名,后面直接用別名就可以了,
沿用上面的使用形式1的例子,這里我就不改動步驟1了,我直接在步驟2中進行另起別名,
import demo.my_module as n1 #另起別名為n1
print(n1.a)
n1.fun1()
執行結果:
100
這是1個包
結果是一樣的,但如果代碼比較長的話,使用別名會方便很多,
當然了,這里也可以用使用形式2的方式匯入包并另起別名,使用時用別名就可以了,這個方式我就不舉例了,你們自己可以去試試,
使用方式4:匯入某個功能
from 包名.模塊名 import 功能1
功能1
這里我也沿用已創建好的包,直接在另一個.py檔案中進行使用,
from demo.my_module import fun1
fun1()
執行結果:
這是1個包
使用方式5:匯入所有功能
在模塊匯入的時候我們介紹了import * 這個方式去匯入模塊里面的所有功能,在這里也可以這么入匯入包里面的模塊的所有功能,
舉例,名叫“demo”包里面有1個模塊叫“hhhh”,模塊的代碼如下:
def fun1():
print("這是功能1")
def fun2():
print("這是功能2")
然后我們在另一個.py檔案中呼叫一下;
from demo.hhhh import *
fun1()
fun2()
執行結果:
這是功能1
這是功能2
6.關于all的使用
關于__all__的使用在模塊的時候有介紹過,那是控制可以被匯入的功能串列,但在包里面,__all__是控制可以被匯入的模塊串列,即宣告哪些模塊可以被匯入,
包里面的__all__是在__init__檔案中宣告的,而不是在哪個模塊中寫的,
舉例:一個包里面有多個模塊,其中被all宣告的模塊可以被匯入,不宣告的不可以被匯入,
步驟1,在名為demo的包里面有hhhh和my_module兩個模塊,但在int檔案中被all宣告只有hhhh檔案可以使用,int檔案的代碼如下:
__all__ = [
"hhhh" # hhhh模塊允許被匯入
]
步驟2,在新的.py檔案中匯入demo包里面的hhhh和my_module兩個模塊:
from demo import * #匯入包里面的所有模塊
hhhh.fun1() #呼叫hhhh模塊的fun1功能,輸出“這是功能1”
my_module.fun1() #呼叫my_module模塊的fun1功能,輸出“這是1個包”
執行結果:

很明顯,雖然用 * 匯入了所有模塊,但被all宣告可匯入的hhhh模塊是可以被使用的,沒被all宣告的my_module模塊是不能使用的,系統無法識別,
👳三、模塊與包的作用
1.提高代碼的可重用性,好用的代碼不止你1個人可以用,很多人都可以重復使用它,
2.提高代碼的可讀性,如果所有的代碼都放在1個.py檔案中,那代碼就太長了,增加了理解和維護難度,所以可以把一些常用的代碼封裝成包和模塊,起1個望文生義的名字,需要的時候直接用就行,減少了代碼的數量,提高了可讀性,
3.減少代碼的冗余,模塊里面封裝的一些方法,我們直接給引數去使用就可以了,不用把方法再寫一遍,占用記憶體,也就減少了代碼的冗余,
👳四、第三方庫的安裝
Python雖然有很多自帶的模塊和包,簡稱內置模塊,但只會使用內置模塊還不夠,畢竟內置模塊有限,我們經常會用到第三方的庫,這個時候學習怎么安裝第三方的庫(包)是很必要的,
今天來介紹3種第三方模塊與包的安裝方法,
1.通過pip安裝
可以通過包管理命令pip去進行第三模塊與包的下載和安裝,前提是你安裝的Python是照著我前面在【Python基礎入門】那篇文章所講的方式去安裝,所有的選項都勾選了,這樣你就不用配置環境變數了,首先查看一下你的pip是否能用,
方法:WIN+R調出運行視窗→輸入cmd→如果出現下面的pip資訊則是可以使用pip

如果出現紅字提示“cmd中 ’pip‘不是內部或外部命令,也不是可運行的程式或批處理檔案”,那么你就手動配置一下環境變數吧,實在不行就回過頭跟著我說的安裝Python的步驟去重新裝吧,
回到pip如何安裝第三方模塊與包的問題,首先我們得知道我們要安裝的第三方模塊與包是叫什么名字,比如Pillow這個第三方庫,這是Python下非常強大的處理影像的工具庫,安裝方法是:
1.WIN+R調出運行視窗
2.輸入cmd
3.輸入 pip install Pillow
4.等待下載和安裝的完成

有時候會出現很多紅字提示下載失敗,這個很正常,原因可能是:
(1).pip版本過低,升級一下pip版本,在黑視窗輸入:python -m pip install -U pip
(2)網路不好,多下載幾遍就可以了
2.通過Pycharm安裝
通過pip安裝是不需要打開軟體的,但我們也可以通過Pycharm進行安裝,方法如下:
點擊左上角的 File → Settings → Project:專案名 → Python interpreter → 點擊 + →
輸入你想安裝的包名,選擇你看上的 → 點擊 Install Package → 等待下載和安裝



3.通過渠道下載.whl檔案安裝
可以通過官網等渠道去搜索和下載你想要的包,官網:https://pypi.org/ ,搜索你要下載的第三方庫,比如說Pillow這個庫,直接搜就可以了:

然后選擇你要下載的檔案,比如Pillow8.3.2這個版本,進入下載頁面,點擊 Download files,

進去之后有很多的版本型號,建議選擇與你符合的版本,否則可能裝不了,這里要注意Python版本、系統和電腦的位數,

比如說我的Python裝的是3.9.6的,所以我下的是cp39里面的,電腦是64位,用的是Windows系統,所以我下的版本是 Pillow-8.3.2-cp39-cp39-win_amd64.whl 這個檔案,

下載好之后,WIN+R 打開命令列輸入CMD,在黑視窗中輸入 pip install 檔案路徑下的檔案名,比如我下載后存放的路徑是D:\谷歌瀏覽器,所以我在黑視窗輸入的代碼是:
pip install D:\谷歌瀏覽器\Pillow-8.3.2-cp39-cp39-win_amd64.whl
然后回車進行安裝,等待安裝完成,

👳結語
Python中的模塊與包就先講到這里了,有粉絲跟我說不知道該怎么去看這個系列的博文,我這里說明一下,下面這張圖是我這個系列的文章知識板塊的總覽,主要分成基礎入門和高級編程兩塊,跟著序號去學就可以,

比如說首先你才開始學Python,那你就看基礎入門的文章,這一塊的知識我都放成了一篇,學完之后再去看高級編程里面的文章,跟著序號去找對應的文章就可以了,雖然有些板塊我還沒整理好,但后續會陸續更新這一塊的內容的,
Python新手入門教程專欄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/301050.html
標籤:python
上一篇:??最全萬字Python串列來襲,小伙伴們快學習起學??
下一篇:Python基礎語法(一)
