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

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

2、Tqdm

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

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

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

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

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

Diagrams 是一個 Python 庫,用于創(chuàng)建各種類型的圖表,如系統(tǒng)架構(gòu)圖、流程圖、網(wǎng)絡(luò)拓撲圖等。該庫提供了一組易于使用的 API,可以使用 Python 代碼來定義圖表的元素和連接方式。
Diagrams 的主要特點如下:
簡單易用:Diagrams 提供了簡單易用的 API,使用戶能夠快速創(chuàng)建各種類型的圖表。
多種圖表類型:Diagrams 支持創(chuàng)建多種類型的圖表,如系統(tǒng)架構(gòu)圖、流程圖、網(wǎng)絡(luò)拓撲圖等。
可定制性:Diagrams 允許用戶自定義圖表元素的顏色、樣式和大小等屬性,以及連接方式和布局等。
豐富的示例庫:Diagrams 提供了大量的示例代碼,幫助用戶快速了解如何使用庫來創(chuàng)建不同類型的圖表。
示例:
下面是一個使用 Diagrams 創(chuàng)建系統(tǒng)架構(gòu)圖的簡單示例。假設(shè)我們要創(chuàng)建一個由多個組件組成的系統(tǒng)架構(gòu)圖,其中每個組件都由一個矩形表示,組件之間的依賴關(guān)系由箭頭表示。
首先,我們需要在本地系統(tǒng)上安裝 Diagrams??梢园凑?Diagrams 官方文檔中的說明進行安裝。
然后,我們可以使用以下 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)建一個名為 "System Architecture" 的系統(tǒng)架構(gòu)圖,并定義了兩個子集群 "Web Cluster" 和 "Worker Cluster",分別包含了多個組件。最后,我們使用 Diagrams 提供的箭頭符號 >> 和 Edge 方法來定義組件之間的連接關(guān)系,以及使用 Edge 方法來定義箭頭標簽。
https://github.com/mingrammer/diagrams
7、Memray

MemRay 是由 Bloomberg 開發(fā)的一款 Python 庫,用于幫助開發(fā)人員診斷 Python 應(yīng)用程序中的內(nèi)存問題。該庫提供了一個易于使用的命令行界面,可以幫助開發(fā)人員快速定位內(nèi)存泄漏和內(nèi)存占用問題,并提供了可視化工具以幫助用戶更好地分析和理解內(nèi)存使用情況。
MemRay 的主要特點如下:
簡單易用:MemRay 提供了一個易于使用的命令行界面,使用戶能夠快速定位內(nèi)存問題。
實時監(jiān)控:MemRay 可以實時監(jiān)控 Python 應(yīng)用程序的內(nèi)存使用情況,并在發(fā)現(xiàn)問題時提供警報。
可視化工具:MemRay 提供了可視化工具,使用戶能夠更好地理解內(nèi)存使用情況并找到問題的根源。
多種內(nèi)存問題檢測:MemRay 支持檢測多種內(nèi)存問題,包括內(nèi)存泄漏、內(nèi)存占用、引用循環(huán)等。
示例:
下面是一個使用 MemRay 檢測內(nèi)存問題的簡單示例。假設(shè)我們有一個 Python 應(yīng)用程序,它會讀取一個大型 CSV 文件并對數(shù)據(jù)進行分析。我們發(fā)現(xiàn)應(yīng)用程序在處理大型數(shù)據(jù)集時會占用大量內(nèi)存,并且有時會因為內(nèi)存不足而崩潰。
首先,我們需要在本地系統(tǒng)上安裝 MemRay??梢园凑?MemRay 官方文檔中的說明進行安裝。
然后,我們可以使用以下 Python 代碼來啟動應(yīng)用程序并監(jiān)控其內(nèi)存使用情況:
from?memray?import?start_memraydef?process_data():?? ?# Read and analyze large CSV file?? ?passif?__name__ ==?'__main__': ? ?start_memray()?# 啟動MemRay?? ?process_data()?# 處理數(shù)據(jù)
在上面的代碼中,我們首先導(dǎo)入 MemRay 庫并調(diào)用 start_memray 方法來啟動內(nèi)存監(jiān)控。然后,我們調(diào)用 process_data 函數(shù)來處理數(shù)據(jù)。在處理數(shù)據(jù)時,MemRay 將記錄應(yīng)用程序的內(nèi)存使用情況,并在發(fā)現(xiàn)問題時發(fā)出警報。
https://github.com/bloomberg/memray
結(jié)束
Python 生態(tài)系統(tǒng)中有數(shù)以千計的庫可供使用,每個庫都有其獨特的優(yōu)勢和用途。在本文中,我們介紹的知識冰山一角。
需要編程資料的小伙伴
移步后臺說“python庫”即可?