9 3 收藏 分享 這7個(gè)實(shí)用的Python庫,提高你的開發(fā)生產(chǎn)力

Python 作為一種高效、易用的編程語言,其強(qiáng)大的生態(tài)系統(tǒng)使其成為了各行各業(yè)的首選語言。在這個(gè)生態(tài)系統(tǒng)中,有很多優(yōu)秀的 Python 庫,能夠幫助開發(fā)者更加高效地完成各種任務(wù)。本文將介紹 7 個(gè)實(shí)用的 Python 庫,分別是 Fire、Tqdm、Mypy、Bokeh、Pyenv、Diagrams 和 Memray。這些庫都有其獨(dú)特的優(yōu)勢,可以幫助開發(fā)者更加高效地完成代碼編寫、調(diào)試、可視化等任務(wù)。

1、Fire
Python Fire 是一個(gè)由 Google 開發(fā)的 Python 庫,它可以將任何 Python 對象轉(zhuǎn)換為命令行接口。它能夠?qū)⒁粋€(gè)函數(shù)或一個(gè)類轉(zhuǎn)換成一個(gè)命令行程序,使得用戶可以直接在命令行中運(yùn)行它,而無需編寫額外的代碼或腳本。Python Fire 的設(shè)計(jì)目標(biāo)是讓 Python 更加易用,同時(shí)提高程序的可讀性和可維護(hù)性。
Python Fire 的主要特點(diǎn)如下:
命令程序自動(dòng)生成:只需要使用 Python Fire 裝飾器將函數(shù)或類包裝起來,就可以自動(dòng)生成命令行程序。
自動(dòng)類型推斷:Python Fire 可以自動(dòng)推斷函數(shù)或類方法的參數(shù)類型,從而避免了手動(dòng)輸入類型的麻煩。
支持管道操作:可以通過管道將多個(gè) Python Fire 命令連接在一起,實(shí)現(xiàn)更加復(fù)雜的操作。
簡單易用:Python Fire 的 API 設(shè)計(jì)簡單,易于使用,同時(shí)提供了豐富的文檔和示例。
示例:
下面是一個(gè)使用 Python Fire 的簡單示例。假設(shè)我們有一個(gè)名為 calculator.py 的文件,其中定義了一個(gè)名為 Calculator 的類,其中包含了加法和乘法兩個(gè)方法。我們可以使用 Python Fire 來將這個(gè)類轉(zhuǎn)換為一個(gè)命令行程序,使得用戶可以在命令行中使用它。

2、Tqdm

tqdm 是一個(gè)快速、可擴(kuò)展的 Python 進(jìn)度條庫。它可以在循環(huán)中顯示進(jìn)度條,方便用戶實(shí)時(shí)查看任務(wù)進(jìn)度。tqdm 的設(shè)計(jì)目標(biāo)是使進(jìn)度條盡可能簡單易用,并提供一些有用的功能,例如估計(jì)剩余時(shí)間和動(dòng)態(tài)調(diào)整進(jìn)度條長度。
tqdm 的主要特點(diǎn)如下:
顯示進(jìn)度條:在循環(huán)中顯示進(jìn)度條,方便用戶實(shí)時(shí)查看任務(wù)進(jìn)度。
簡單易用:只需要將可迭代對象作為參數(shù)傳遞給 tqdm() 函數(shù),就可以顯示進(jìn)度條。
可擴(kuò)展性:tqdm 支持自定義進(jìn)度條樣式和其他配置選項(xiàng),可以滿足不同的需求。
高性能:tqdm 采用了多種優(yōu)化技術(shù),可以在循環(huán)中高效地更新進(jìn)度條。
示例:
下面是一個(gè)使用 tqdm 的簡單示例。假設(shè)我們有一個(gè)列表,其中包含了一些需要處理的元素。我們可以使用 tqdm 將處理過程的進(jìn)度條顯示出來,方便用戶實(shí)時(shí)查看任務(wù)進(jìn)度。
在上面的代碼中,我們首先導(dǎo)入了 tqdm 模塊,并定義了一個(gè)名為 data 的列表。接下來,我們使用 tqdm() 函數(shù)將 data 作為參數(shù)傳遞進(jìn)去,然后在循環(huán)中處理每個(gè)元素。tqdm() 函數(shù)會自動(dòng)顯示進(jìn)度條,并在每次循環(huán)時(shí)更新進(jìn)度條。在這個(gè)例子中,我們模擬了每個(gè)元素的處理時(shí)間為 0.5 秒。
運(yùn)行上面的代碼,我們可以看到進(jìn)度條正在逐步更新,以反映處理任務(wù)的進(jìn)度。
https://github.com/tqdm/tqdm
3、Mypy

mypy 是一個(gè)靜態(tài)類型檢查器,可以用于檢查 Python 代碼中的類型錯(cuò)誤。mypy 支持 Python 2 和 Python 3,并提供了豐富的類型注釋語法和類型推斷機(jī)制,可以幫助開發(fā)者更加準(zhǔn)確地描述代碼中的數(shù)據(jù)類型。通過使用 mypy,開發(fā)者可以在編碼階段捕獲許多常見的類型錯(cuò)誤,避免在運(yùn)行時(shí)出現(xiàn)意外錯(cuò)誤,提高代碼的可維護(hù)性和可靠性。
mypy 的主要特點(diǎn)如下:
靜態(tài)類型檢查:在編碼階段檢查類型錯(cuò)誤,避免在運(yùn)行時(shí)出現(xiàn)意外錯(cuò)誤。
支持 Python 2 和 Python 3:可以用于檢查 Python 2 和 Python 3 代碼中的類型錯(cuò)誤。
豐富的類型注釋語法:支持多種類型注釋語法,包括變量注釋、函數(shù)注釋、類型別名等。
類型推斷機(jī)制:可以根據(jù)代碼上下文自動(dòng)推斷變量的類型,簡化類型注釋。
可擴(kuò)展性:可以通過插件擴(kuò)展 mypy 的功能,例如支持特定框架或庫的類型注釋。
示例:
下面是一個(gè)使用 mypy 的簡單示例。假設(shè)我們有一個(gè)函數(shù),用于計(jì)算兩個(gè)數(shù)的和。我們可以使用 mypy 檢查這個(gè)函數(shù)的類型注釋是否正確,并檢查函數(shù)中是否存在類型錯(cuò)誤。
def add_numbers(a: int, b: int) -> int:
? ?return a + b
result = add_numbers(1, 2)
print(result)
在上面的代碼中,我們定義了一個(gè)名為 add_numbers 的函數(shù),用于計(jì)算兩個(gè)整數(shù)的和。我們使用類型注釋指定了參數(shù) a 和 b 的類型為 int,返回值的類型也為 int。接下來,我們調(diào)用 add_numbers 函數(shù),并將結(jié)果賦值給變量 result。最后,我們輸出 result 的值。
為了使用 mypy 檢查代碼中的類型錯(cuò)誤,我們需要在終端中運(yùn)行以下命令:
mypy test.py
其中 test.py 是我們編寫的 Python 文件名。運(yùn)行上述命令后,mypy 會檢查 test.py 文件中的類型注釋,并輸出任何類型錯(cuò)誤的信息。
https://github.com/python/mypy
4、Bokeh

Bokeh 是一個(gè)交互式數(shù)據(jù)可視化庫,用于在現(xiàn)代 Web 瀏覽器中創(chuàng)建豐富、交互式的可視化界面。Bokeh 的主要特點(diǎn)是支持大數(shù)據(jù)集的可視化,具有高性能、易于使用、可擴(kuò)展性和與多種 Python 庫的集成能力。Bokeh 可以用于創(chuàng)建各種可視化,包括折線圖、散點(diǎn)圖、條形圖、地圖、時(shí)間序列等。
Bokeh 的主要特點(diǎn)如下:
支持交互式數(shù)據(jù)可視化:可以在 Web 瀏覽器中創(chuàng)建交互式的可視化界面。
高性能:支持大數(shù)據(jù)集的可視化,并具有快速繪圖、高度優(yōu)化的渲染引擎等特性。
易于使用:提供簡單易懂的 API,并支持 Jupyter Notebook 等集成環(huán)境。
可擴(kuò)展性:可以通過插件擴(kuò)展 Bokeh 的功能,例如支持特定的數(shù)據(jù)源或視覺效果。
與其他 Python 庫的集成能力:可以與 Pandas、NumPy、SciPy 等常見的 Python 庫集成。
示例:
下面是一個(gè)使用 Bokeh 的簡單示例。假設(shè)我們有一個(gè)包含溫度數(shù)據(jù)的 Pandas 數(shù)據(jù)框,我們可以使用 Bokeh 繪制一個(gè)折線圖來可視化這些數(shù)據(jù)。

在上面的代碼中,我們首先創(chuàng)建一個(gè)包含溫度數(shù)據(jù)的 Pandas 數(shù)據(jù)框。接下來,我們創(chuàng)建一個(gè) Bokeh 圖形對象,并設(shè)置標(biāo)題、坐標(biāo)軸標(biāo)簽等屬性。然后,我們添加一個(gè)折線圖層,用于繪制溫度數(shù)據(jù)。最后,我們將圖形輸出到 HTML 文件,并在瀏覽器中顯示圖形。
https://github.com/bokeh/bokeh
5、Pyenv
Pyenv 是一個(gè) Python 版本管理工具,可以方便地管理多個(gè) Python 版本,并在不同的項(xiàng)目中使用不同的 Python 版本。Pyenv 可以在 Linux、macOS 和其他 Unix 操作系統(tǒng)上運(yùn)行,并提供了簡單易用的命令行接口。

多版本管理:可以同時(shí)安裝多個(gè) Python 版本,并切換使用不同的版本。
虛擬環(huán)境支持:可以在不同的項(xiàng)目中使用不同的 Python 版本和虛擬環(huán)境。
插件系統(tǒng):可以通過插件擴(kuò)展 Pyenv 的功能,例如支持特定的 Python 版本或工具。
簡單易用的命令行接口:提供簡單的命令行工具,方便使用。
示例:
下面是一個(gè)使用 Pyenv 的簡單示例。假設(shè)我們要在一個(gè)項(xiàng)目中使用 Python 3.9.7 版本,并創(chuàng)建一個(gè)新的虛擬環(huán)境來安裝所需的依賴項(xiàng)。
首先,我們需要在本地系統(tǒng)上安裝 Pyenv??梢园凑?Pyenv 官方文檔中的說明進(jìn)行安裝。
然后,我們可以使用以下命令安裝 Python 3.9.7 版本:
pyenv install 3.9.7
接下來,我們可以使用以下命令創(chuàng)建一個(gè)新的虛擬環(huán)境,并激活該環(huán)境:
pyenv virtualenv 3.9.7 myenvpyenv activate myenv
然后,我們可以在該虛擬環(huán)境中安裝所需的依賴項(xiàng),例如:
pip install pandas
最后,我們可以在項(xiàng)目中使用該虛擬環(huán)境的 Python 版本和依賴項(xiàng):
python myscript.py
在上面的示例中,我們首先使用 Pyenv 安裝了 Python 3.9.7 版本,并創(chuàng)建了一個(gè)名為 "myenv" 的虛擬環(huán)境。然后,我們使用 Pyenv 命令激活該虛擬環(huán)境,并在該環(huán)境中安裝了 Pandas 庫。最后,我們可以在項(xiàng)目中使用該虛擬環(huán)境的 Python 版本和依賴項(xiàng)來運(yùn)行 Python 腳本。
https://github.com/pyenv/pyenv
6、Diagrams

Diagrams 是一個(gè) Python 庫,用于創(chuàng)建各種類型的圖表,如系統(tǒng)架構(gòu)圖、流程圖、網(wǎng)絡(luò)拓?fù)鋱D等。該庫提供了一組易于使用的 API,可以使用 Python 代碼來定義圖表的元素和連接方式。
Diagrams 的主要特點(diǎn)如下:
簡單易用:Diagrams 提供了簡單易用的 API,使用戶能夠快速創(chuàng)建各種類型的圖表。
多種圖表類型:Diagrams 支持創(chuàng)建多種類型的圖表,如系統(tǒng)架構(gòu)圖、流程圖、網(wǎng)絡(luò)拓?fù)鋱D等。
可定制性:Diagrams 允許用戶自定義圖表元素的顏色、樣式和大小等屬性,以及連接方式和布局等。
豐富的示例庫:Diagrams 提供了大量的示例代碼,幫助用戶快速了解如何使用庫來創(chuàng)建不同類型的圖表。
示例:
下面是一個(gè)使用 Diagrams 創(chuàng)建系統(tǒng)架構(gòu)圖的簡單示例。假設(shè)我們要?jiǎng)?chuàng)建一個(gè)由多個(gè)組件組成的系統(tǒng)架構(gòu)圖,其中每個(gè)組件都由一個(gè)矩形表示,組件之間的依賴關(guān)系由箭頭表示。
首先,我們需要在本地系統(tǒng)上安裝 Diagrams。可以按照 Diagrams 官方文檔中的說明進(jìn)行安裝。
然后,我們可以使用以下 Python 代碼創(chuàng)建系統(tǒng)架構(gòu)圖:
from diagrams import Diagram, Cluster, Edgefrom diagrams.onprem.compute import Serverfrom diagrams.onprem.database import PostgreSQLfrom diagrams.onprem.inmemory import Redisfrom diagrams.onprem.network import Nginxfrom diagrams.programming.language import Pythonfrom diagrams.programming.framework import Flaskwith Diagram("System Architecture", show=False): ? ?with Cluster("Web Cluster"):
? ? ? ?nginx = Nginx("nginx")
? ? ? ?flask1 = Flask("flask1")
? ? ? ?flask2 = Flask("flask2")
? ? ? ?nginx >> flask1 >> Redis("session") >> flask2 >> PostgreSQL("db") ? ?with Cluster("Worker Cluster"):
? ? ? ?worker = Server("worker")
? ? ? ?Python("celery") >> worker
? ?nginx >> Edge(label="HTTPS") >> flask1
在上面的代碼中,我們首先導(dǎo)入 Diagrams 庫和需要用到的圖表元素,如 Server、PostgreSQL、Redis 等。然后,我們使用 Diagrams 提供的 with 語法創(chuàng)建一個(gè)名為 "System Architecture" 的系統(tǒng)架構(gòu)圖,并定義了兩個(gè)子集群 "Web Cluster" 和 "Worker Cluster",分別包含了多個(gè)組件。最后,我們使用 Diagrams 提供的箭頭符號 >> 和 Edge 方法來定義組件之間的連接關(guān)系,以及使用 Edge 方法來定義箭頭標(biāo)簽。
https://github.com/mingrammer/diagrams
7、Memray

MemRay 是由 Bloomberg 開發(fā)的一款 Python 庫,用于幫助開發(fā)人員診斷 Python 應(yīng)用程序中的內(nèi)存問題。該庫提供了一個(gè)易于使用的命令行界面,可以幫助開發(fā)人員快速定位內(nèi)存泄漏和內(nèi)存占用問題,并提供了可視化工具以幫助用戶更好地分析和理解內(nèi)存使用情況。
MemRay 的主要特點(diǎn)如下:
簡單易用:MemRay 提供了一個(gè)易于使用的命令行界面,使用戶能夠快速定位內(nèi)存問題。
實(shí)時(shí)監(jiān)控:MemRay 可以實(shí)時(shí)監(jiān)控 Python 應(yīng)用程序的內(nèi)存使用情況,并在發(fā)現(xiàn)問題時(shí)提供警報(bào)。
可視化工具:MemRay 提供了可視化工具,使用戶能夠更好地理解內(nèi)存使用情況并找到問題的根源。
多種內(nèi)存問題檢測:MemRay 支持檢測多種內(nèi)存問題,包括內(nèi)存泄漏、內(nèi)存占用、引用循環(huán)等。
示例:
下面是一個(gè)使用 MemRay 檢測內(nèi)存問題的簡單示例。假設(shè)我們有一個(gè) Python 應(yīng)用程序,它會讀取一個(gè)大型 CSV 文件并對數(shù)據(jù)進(jìn)行分析。我們發(fā)現(xiàn)應(yīng)用程序在處理大型數(shù)據(jù)集時(shí)會占用大量內(nèi)存,并且有時(shí)會因?yàn)閮?nèi)存不足而崩潰。
首先,我們需要在本地系統(tǒng)上安裝 MemRay??梢园凑?MemRay 官方文檔中的說明進(jìn)行安裝。
然后,我們可以使用以下 Python 代碼來啟動(dòng)應(yīng)用程序并監(jiān)控其內(nèi)存使用情況:
from memray import start_memraydef process_data():
? ?# Read and analyze large CSV file
? ?passif __name__ == '__main__':
? ?start_memray() # 啟動(dòng)MemRay
? ?process_data() # 處理數(shù)據(jù)
在上面的代碼中,我們首先導(dǎo)入 MemRay 庫并調(diào)用 start_memray 方法來啟動(dòng)內(nèi)存監(jiān)控。然后,我們調(diào)用 process_data 函數(shù)來處理數(shù)據(jù)。在處理數(shù)據(jù)時(shí),MemRay 將記錄應(yīng)用程序的內(nèi)存使用情況,并在發(fā)現(xiàn)問題時(shí)發(fā)出警報(bào)。
https://github.com/bloomberg/memray
結(jié)束
Python 生態(tài)系統(tǒng)中有數(shù)以千計(jì)的庫可供使用,每個(gè)庫都有其獨(dú)特的優(yōu)勢和用途。在本文中,我們介紹了 7 個(gè)實(shí)用的 Python 庫,這些庫是 Python 生態(tài)系統(tǒng)中值得探索和學(xué)習(xí)的一部分,希望能夠?qū)ψx者有所啟發(fā)。當(dāng)然,這些庫只是 Python 生態(tài)系統(tǒng)中的冰山一角,我們?nèi)匀恍枰粩嗟貙W(xué)習(xí)和探索,才能更好地應(yīng)對各種編程任務(wù)。
今天的分享就到這里,感謝你的閱讀,希望能夠幫助到你,文章創(chuàng)作不易,如果你喜歡我的分享,別忘了點(diǎn)贊轉(zhuǎn)發(fā),讓更多有需要的人看到,最后別忘記關(guān)注up主,你的支持將是我分享最大的動(dòng)力,后續(xù)我會持續(xù)輸出更多內(nèi)容,敬請期待
需要編程資料的小伙伴留言“python庫”即可?