天天看點

這7個實用的Python庫,提高你的開發生産力

作者:前端達人
轉載說明:原創不易,未經授權,謝絕任何形式的轉載

Python 作為一種高效、易用的程式設計語言,其強大的生态系統使其成為了各行各業的首選語言。在這個生态系統中,有很多優秀的 Python 庫,能夠幫助開發者更加高效地完成各種任務。本文将介紹 7 個實用的 Python 庫,分别是 Fire、Tqdm、Mypy、Bokeh、Pyenv、Diagrams 和 Memray。這些庫都有其獨特的優勢,可以幫助開發者更加高效地完成代碼編寫、調試、可視化等任務。

這7個實用的Python庫,提高你的開發生産力

1、Fire

這7個實用的Python庫,提高你的開發生産力

Python Fire 是一個由 Google 開發的 Python 庫,它可以将任何 Python 對象轉換為指令行接口。它能夠将一個函數或一個類轉換成一個指令行程式,使得使用者可以直接在指令行中運作它,而無需編寫額外的代碼或腳本。Python Fire 的設計目标是讓 Python 更加易用,同時提高程式的可讀性和可維護性。

Python Fire 的主要特點如下:

  1. 指令行程式自動生成:隻需要使用 Python Fire 裝飾器将函數或類包裝起來,就可以自動生成指令行程式。
  2. 自動類型推斷:Python Fire 可以自動推斷函數或類方法的參數類型,進而避免了手動輸入類型的麻煩。
  3. 支援管道操作:可以通過管道将多個 Python Fire 指令連接配接在一起,實作更加複雜的操作。
  4. 簡單易用:Python Fire 的 API 設計簡單,易于使用,同時提供了豐富的文檔和示例。

示例:

下面是一個使用 Python Fire 的簡單示例。假設我們有一個名為 calculator.py 的檔案,其中定義了一個名為 Calculator 的類,其中包含了加法和乘法兩個方法。我們可以使用 Python Fire 來将這個類轉換為一個指令行程式,使得使用者可以在指令行中使用它。

import fire

class Calculator:
    def add(self, x, y):
        return x + y

    def multiply(self, x, y):
        return x * y

if __name__ == '__main__':
    fire.Fire(Calculator)
           

在上面的代碼中,我們首先導入了 fire 子產品,并定義了一個名為 Calculator 的類。接下來,我們使用 fire.Fire() 方法将 Calculator 類轉換為一個指令行程式。然後,使用者可以在指令行中輸入以下指令來調用 add 和 multiply 方法:

python calculator.py add --x=3 --y=5
python calculator.py multiply --x=3 --y=5           

這将分别調用 Calculator 類的 add 和 multiply 方法,輸出結果為 8 和 15。

https://github.com/google/python-fire

2、Tqdm

這7個實用的Python庫,提高你的開發生産力

tqdm 是一個快速、可擴充的 Python 進度條庫。它可以在循環中顯示進度條,友善使用者實時檢視任務進度。tqdm 的設計目标是使進度條盡可能簡單易用,并提供一些有用的功能,例如估計剩餘時間和動态調整進度條長度。

tqdm 的主要特點如下:

  1. 顯示進度條:在循環中顯示進度條,友善使用者實時檢視任務進度。
  2. 簡單易用:隻需要将可疊代對象作為參數傳遞給 tqdm() 函數,就可以顯示進度條。
  3. 可擴充性:tqdm 支援自定義進度條樣式和其他配置選項,可以滿足不同的需求。
  4. 高性能:tqdm 采用了多種優化技術,可以在循環中高效地更新進度條。

示例:

下面是一個使用 tqdm 的簡單示例。假設我們有一個清單,其中包含了一些需要處理的元素。我們可以使用 tqdm 将處理過程的進度條顯示出來,友善使用者實時檢視任務進度。

from tqdm import tqdm
import time

data = ['a', 'b', 'c', 'd']

for item in tqdm(data):
    # 模拟處理時間
    time.sleep(0.5)
           

在上面的代碼中,我們首先導入了 tqdm 子產品,并定義了一個名為 data 的清單。接下來,我們使用 tqdm() 函數将 data 作為參數傳遞進去,然後在循環中處理每個元素。tqdm() 函數會自動顯示進度條,并在每次循環時更新進度條。在這個例子中,我們模拟了每個元素的處理時間為 0.5 秒。

運作上面的代碼,我們可以看到進度條正在逐漸更新,以反映處理任務的進度。

https://github.com/tqdm/tqdm

3、Mypy

這7個實用的Python庫,提高你的開發生産力

mypy 是一個靜态類型檢查器,可以用于檢查 Python 代碼中的類型錯誤。mypy 支援 Python 2 和 Python 3,并提供了豐富的類型注釋文法和類型推斷機制,可以幫助開發者更加準确地描述代碼中的資料類型。通過使用 mypy,開發者可以在編碼階段捕獲許多常見的類型錯誤,避免在運作時出現意外錯誤,提高代碼的可維護性和可靠性。

mypy 的主要特點如下:

  1. 靜态類型檢查:在編碼階段檢查類型錯誤,避免在運作時出現意外錯誤。
  2. 支援 Python 2 和 Python 3:可以用于檢查 Python 2 和 Python 3 代碼中的類型錯誤。
  3. 豐富的類型注釋文法:支援多種類型注釋文法,包括變量注釋、函數注釋、類型别名等。
  4. 類型推斷機制:可以根據代碼上下文自動推斷變量的類型,簡化類型注釋。
  5. 可擴充性:可以通過插件擴充 mypy 的功能,例如支援特定架構或庫的類型注釋。

示例:

下面是一個使用 mypy 的簡單示例。假設我們有一個函數,用于計算兩個數的和。我們可以使用 mypy 檢查這個函數的類型注釋是否正确,并檢查函數中是否存在類型錯誤。

def add_numbers(a: int, b: int) -> int:
    return a + b

result = add_numbers(1, 2)
print(result)           

在上面的代碼中,我們定義了一個名為 add_numbers 的函數,用于計算兩個整數的和。我們使用類型注釋指定了參數 a 和 b 的類型為 int,傳回值的類型也為 int。接下來,我們調用 add_numbers 函數,并将結果指派給變量 result。最後,我們輸出 result 的值。

為了使用 mypy 檢查代碼中的類型錯誤,我們需要在終端中運作以下指令:

mypy test.py           

其中 test.py 是我們編寫的 Python 檔案名。運作上述指令後,mypy 會檢查 test.py 檔案中的類型注釋,并輸出任何類型錯誤的資訊。

https://github.com/python/mypy

4、Bokeh

這7個實用的Python庫,提高你的開發生産力

Bokeh 是一個互動式資料可視化庫,用于在現代 Web 浏覽器中建立豐富、互動式的可視化界面。Bokeh 的主要特點是支援大資料集的可視化,具有高性能、易于使用、可擴充性和與多種 Python 庫的內建能力。Bokeh 可以用于建立各種可視化,包括折線圖、散點圖、條形圖、地圖、時間序列等。

Bokeh 的主要特點如下:

  1. 支援互動式資料可視化:可以在 Web 浏覽器中建立互動式的可視化界面。
  2. 高性能:支援大資料集的可視化,并具有快速繪圖、高度優化的渲染引擎等特性。
  3. 易于使用:提供簡單易懂的 API,并支援 Jupyter Notebook 等內建環境。
  4. 可擴充性:可以通過插件擴充 Bokeh 的功能,例如支援特定的資料源或視覺效果。
  5. 與其他 Python 庫的內建能力:可以與 Pandas、NumPy、SciPy 等常見的 Python 庫內建。

示例:

下面是一個使用 Bokeh 的簡單示例。假設我們有一個包含溫度資料的 Pandas 資料框,我們可以使用 Bokeh 繪制一個折線圖來可視化這些資料。

import pandas as pd
from bokeh.plotting import figure, output_file, show

# 建立一個包含溫度資料的 Pandas 資料框
data = pd.DataFrame({'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
                     'temperature': [10, 15, 20]})

# 建立一個 Bokeh 圖形對象
p = figure(title='Temperature', x_axis_label='Date', y_axis_label='Temperature')

# 添加一個折線圖層
p.line(x=data['date'], y=data['temperature'], line_width=2)

# 将圖形輸出到 HTML 檔案
output_file('temperature.html')

# 在浏覽器中顯示圖形
show(p)
           

在上面的代碼中,我們首先建立一個包含溫度資料的 Pandas 資料框。接下來,我們建立一個 Bokeh 圖形對象,并設定标題、坐标軸标簽等屬性。然後,我們添加一個折線圖層,用于繪制溫度資料。最後,我們将圖形輸出到 HTML 檔案,并在浏覽器中顯示圖形。

https://github.com/bokeh/bokeh

5、Pyenv

這7個實用的Python庫,提高你的開發生産力

Pyenv 是一個 Python 版本管理工具,可以友善地管理多個 Python 版本,并在不同的項目中使用不同的 Python 版本。Pyenv 可以在 Linux、macOS 和其他 Unix 作業系統上運作,并提供了簡單易用的指令行接口。

Pyenv 的主要特點如下:

  1. 多版本管理:可以同時安裝多個 Python 版本,并切換使用不同的版本。
  2. 虛拟環境支援:可以在不同的項目中使用不同的 Python 版本和虛拟環境。
  3. 插件系統:可以通過插件擴充 Pyenv 的功能,例如支援特定的 Python 版本或工具。
  4. 簡單易用的指令行接口:提供簡單的指令行工具,友善使用。

示例:

下面是一個使用 Pyenv 的簡單示例。假設我們要在一個項目中使用 Python 3.9.7 版本,并建立一個新的虛拟環境來安裝所需的依賴項。

首先,我們需要在本地系統上安裝 Pyenv。可以按照 Pyenv 官方文檔中的說明進行安裝。

然後,我們可以使用以下指令安裝 Python 3.9.7 版本:

pyenv install 3.9.7           

接下來,我們可以使用以下指令建立一個新的虛拟環境,并激活該環境:

pyenv virtualenv 3.9.7 myenv
pyenv activate myenv           

然後,我們可以在該虛拟環境中安裝所需的依賴項,例如:

pip install pandas           

最後,我們可以在項目中使用該虛拟環境的 Python 版本和依賴項:

python myscript.py           

在上面的示例中,我們首先使用 Pyenv 安裝了 Python 3.9.7 版本,并建立了一個名為 "myenv" 的虛拟環境。然後,我們使用 Pyenv 指令激活該虛拟環境,并在該環境中安裝了 Pandas 庫。最後,我們可以在項目中使用該虛拟環境的 Python 版本和依賴項來運作 Python 腳本。

https://github.com/pyenv/pyenv

6、Diagrams

這7個實用的Python庫,提高你的開發生産力

Diagrams 是一個 Python 庫,用于建立各種類型的圖表,如系統架構圖、流程圖、網絡拓撲圖等。該庫提供了一組易于使用的 API,可以使用 Python 代碼來定義圖表的元素和連接配接方式。

Diagrams 的主要特點如下:

  1. 簡單易用:Diagrams 提供了簡單易用的 API,使使用者能夠快速建立各種類型的圖表。
  2. 多種圖表類型:Diagrams 支援建立多種類型的圖表,如系統架構圖、流程圖、網絡拓撲圖等。
  3. 可定制性:Diagrams 允許使用者自定義圖表元素的顔色、樣式和大小等屬性,以及連接配接方式和布局等。
  4. 豐富的示例庫:Diagrams 提供了大量的示例代碼,幫助使用者快速了解如何使用庫來建立不同類型的圖表。

示例:

下面是一個使用 Diagrams 建立系統架構圖的簡單示例。假設我們要建立一個由多個元件組成的系統架構圖,其中每個元件都由一個矩形表示,元件之間的依賴關系由箭頭表示。

首先,我們需要在本地系統上安裝 Diagrams。可以按照 Diagrams 官方文檔中的說明進行安裝。

然後,我們可以使用以下 Python 代碼建立系統架構圖:

from diagrams import Diagram, Cluster, Edge
from diagrams.onprem.compute import Server
from diagrams.onprem.database import PostgreSQL
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.network import Nginx
from diagrams.programming.language import Python
from diagrams.programming.framework import Flask

with 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
           

在上面的代碼中,我們首先導入 Diagrams 庫和需要用到的圖表元素,如 Server、PostgreSQL、Redis 等。然後,我們使用 Diagrams 提供的 with 文法建立一個名為 "System Architecture" 的系統架構圖,并定義了兩個子叢集 "Web Cluster" 和 "Worker Cluster",分别包含了多個元件。最後,我們使用 Diagrams 提供的箭頭符号 >> 和 Edge 方法來定義元件之間的連接配接關系,以及使用 Edge 方法來定義箭頭标簽。

https://github.com/mingrammer/diagrams

7、Memray

這7個實用的Python庫,提高你的開發生産力

MemRay 是由 Bloomberg 開發的一款 Python 庫,用于幫助開發人員診斷 Python 應用程式中的記憶體問題。該庫提供了一個易于使用的指令行界面,可以幫助開發人員快速定位記憶體洩漏和記憶體占用問題,并提供了可視化工具以幫助使用者更好地分析和了解記憶體使用情況。

MemRay 的主要特點如下:

  1. 簡單易用:MemRay 提供了一個易于使用的指令行界面,使使用者能夠快速定位記憶體問題。
  2. 實時監控:MemRay 可以實時監控 Python 應用程式的記憶體使用情況,并在發現問題時提供警報。
  3. 可視化工具:MemRay 提供了可視化工具,使使用者能夠更好地了解記憶體使用情況并找到問題的根源。
  4. 多種記憶體問題檢測:MemRay 支援檢測多種記憶體問題,包括記憶體洩漏、記憶體占用、引用循環等。

示例:

下面是一個使用 MemRay 檢測記憶體問題的簡單示例。假設我們有一個 Python 應用程式,它會讀取一個大型 CSV 檔案并對資料進行分析。我們發現應用程式在處理大型資料集時會占用大量記憶體,并且有時會因為記憶體不足而崩潰。

首先,我們需要在本地系統上安裝 MemRay。可以按照 MemRay 官方文檔中的說明進行安裝。

然後,我們可以使用以下 Python 代碼來啟動應用程式并監控其記憶體使用情況:

from memray import start_memray

def process_data():
    # Read and analyze large CSV file
    pass

if __name__ == '__main__':
    start_memray() # 啟動MemRay
    process_data() # 處理資料
           

在上面的代碼中,我們首先導入 MemRay 庫并調用 start_memray 方法來啟動記憶體監控。然後,我們調用 process_data 函數來處理資料。在處理資料時,MemRay 将記錄應用程式的記憶體使用情況,并在發現問題時發出警報。

https://github.com/bloomberg/memray

結束

Python 生态系統中有數以千計的庫可供使用,每個庫都有其獨特的優勢和用途。在本文中,我們介紹了 7 個實用的 Python 庫,這些庫是 Python 生态系統中值得探索和學習的一部分,希望能夠對讀者有所啟發。當然,這些庫隻是 Python 生态系統中的冰山一角,我們仍然需要不斷地學習和探索,才能更好地應對各種程式設計任務。

今天的分享就到這裡,感謝你的閱讀,希望能夠幫助到你,文章創作不易,如果你喜歡我的分享,别忘了點贊轉發,讓更多有需要的人看到,最後别忘記關注「前端達人」,你的支援将是我分享最大的動力,後續我會持續輸出更多内容,敬請期待