1. 模塊
以 .py 為后綴的文件,我們稱之為 模塊,英文名 Module。
模塊讓你能夠有邏輯地組織你的 Python 代碼段,把相關(guān)的代碼分配到一個(gè)模塊里能讓你的代碼更好用,更易懂。
假設(shè)現(xiàn)在有一個(gè)名為 demo.py 的文件,文件內(nèi)容如下
name="Python編程時(shí)光"
print("導(dǎo)入成功")
直接使用 import 語(yǔ)句就可以導(dǎo)入,導(dǎo)入之后,就可以使用 模塊名.變量名 的方式訪問這個(gè)變量。
>>> import demo
導(dǎo)入成功
>>> demo.name
'Python編程時(shí)光'
在導(dǎo)入模塊的時(shí)候,有一個(gè)非常重要的全局變量需要掌握,那就是 __name__ 這個(gè)變量。
現(xiàn)在把 demo.py 的內(nèi)容改成
$ cat demo.py
print("__name__ 的值為: " + __name__)
當(dāng)模塊被直接執(zhí)行時(shí), __name__ 的值為 __main__
$ python demo.py
__name__ 的值為: __main__
當(dāng)模塊被導(dǎo)入時(shí), __name__ 的值為 模塊名
>>> import demo
__name__ 的值為: demo
當(dāng)該模塊被導(dǎo)入后,會(huì)在當(dāng)前目錄下產(chǎn)生一個(gè) 叫做 __pycache__ 的緩存文件夾。
$ tree
.
├── __pycache__
│ └── demo.cpython-39.pyc
└── demo.py
這個(gè)文件夾有什么用呢?
簡(jiǎn)單來說,當(dāng)你導(dǎo)入模塊的時(shí)候,Python解釋器會(huì)把模塊的代碼編譯成字節(jié)碼,并放入 __pycache__文件夾中。
這樣以后再次運(yùn)行的話,如果被調(diào)用的模塊未發(fā)生改變,那就直接跳過編譯這一步,直接去__pycache__文件夾中去運(yùn)行相關(guān)的 *.pyc 文件,大大縮短了項(xiàng)目運(yùn)行前的準(zhǔn)備時(shí)間。
2. 包
在早一點(diǎn)的 Python 版本(Python 3.3 之前)中,如果一個(gè)文件夾下有一個(gè) __init__.py 文件,那我們就稱之為包,英文名 Package。
在后來的 Python 版本(Python 3.3 開始)中,就沒有這個(gè)要求了,只要是文件夾就可以當(dāng)做包,我們稱之為空間命名包,為做區(qū)分,我把上面那種包稱之為 傳統(tǒng)包。
考慮到很多人其實(shí)并不需要接觸到空間命名包,所以我將空間命名包的內(nèi)容單獨(dú)放在一節(jié)里,為選讀章節(jié)。
今天這節(jié)里主要講講傳統(tǒng)包的內(nèi)容。
傳統(tǒng)包里的 __init__.py 可以為空文件,但一定要有該文件,它是包的標(biāo)志性文件,在需要情況下可以在里面進(jìn)行一些包的初始化工作。
$ tree
.
└── demo
├── __init__.py
├── bar.py
└── foo.py
一個(gè)包里可以有多個(gè)模塊,比如上面的 foo.py 和 bar.py 都屬于 demo 模塊。
如果要使用這些模塊,就需要這樣導(dǎo)入
>>> import demo.foo
成功導(dǎo)入 foo.py
>>> import demo.bar
成功導(dǎo)入 bar.py
或者這樣
>>> from demo import foo
成功導(dǎo)入 foo.py
>>> from demo import bar
成功導(dǎo)入 bar.py
3. 庫(kù)
Python 庫(kù)是指一定功能的代碼集合,通常認(rèn)為他是一個(gè)完整的項(xiàng)目打包。
庫(kù)->包->模塊,是從大到小的層級(jí)關(guān)系!
庫(kù):一個(gè)庫(kù)可能由多個(gè)包和模塊組成
包:一個(gè)包可能由多個(gè)模塊組成
模塊:一堆函數(shù)、類、變量的集合
審核編輯:符乾江
-
模塊
+關(guān)注
關(guān)注
7文章
2820瀏覽量
52762 -
python
+關(guān)注
關(guān)注
57文章
4855瀏覽量
89517
發(fā)布評(píng)論請(qǐng)先 登錄
Python調(diào)用API教程
Pico Technology發(fā)布Python軟件包pyPicoSDK
termux如何搭建python游戲
linux虛擬環(huán)境中調(diào)用Linux 版matlab編譯的python庫(kù)時(shí)出錯(cuò)
鴻蒙5開發(fā)寶藏案例分享---優(yōu)化應(yīng)用包體積大小問題
python入門圣經(jīng)-高清電子書(建議下載)
?如何在虛擬環(huán)境中使用 Python,提升你的開發(fā)體驗(yàn)~
Python在嵌入式系統(tǒng)中的應(yīng)用場(chǎng)景
是否可以使用OpenVINO?部署管理器在部署機(jī)器上運(yùn)行Python應(yīng)用程序?
運(yùn)行OVModelForCausalLM Python模塊時(shí)出錯(cuò)了,怎么解決?
Python Connector for InterBase連接解決方案
使用Python實(shí)現(xiàn)xgboost教程
適用于MySQL和MariaDB的Python連接器:可靠的MySQL數(shù)據(jù)連接器和數(shù)據(jù)庫(kù)

python包、模塊和庫(kù)是什么
評(píng)論