升級你的2025年Python工具箱:探索你錯過的重要庫
本文原先發表在這裡:https://www.php.cn/link/00bd13095d06c20b11a2993ca419d16b
Python功能強大,但你的工具能讓你成為程式設計大神,也能讓你陷入困境。不要成為那些還在使用過時工具的開發者,而世界其他地方都在快速發展。
許多開發者仍然嚴重依賴Pandas、Requests和BeautifulSoup等函式庫,但這些並非總是現代開發需求最有效的解決方案。在本文中,我們將探討一些2025年頂尖新興的Python庫,這些函式庫將增強你的開發流程,並幫助你保持領先地位。
A) 過時的庫和更好的替代品
os模組在檔案和路徑處理方面通常很繁瑣,因為它存在諸如特定於平台的路徑分隔符號和冗長的語法等問題。 pathlib透過直覺的物件導向方法(如用於連接路徑的/
、用於檢查的.exists()
和.is_file()
)簡化了這一點,從而實現了無縫的跨平台相容性。憑藉其更簡潔的語法和內建功能,pathlib消除了手動調整的需要,成為現代Python開發者的首選解決方案。
範例:
<code class="language-python">from pathlib import Path # 创建文件 file = Path("example.txt") file.write_text("Hello, Pathlib!") # 读取文件 print(file.read_text()) # 检查是否存在 if file.exists(): print("File exists")</code>
為什麼要切換?
pathlib讓生活更輕鬆。它比os更直觀,採用物件導向的方法來處理檔案和路徑。你不必擔心特定於平台的問題(如與
/
),因為pathlib會為你處理所有這些。此外,語法更簡潔易讀。
對於小型專案來說,它並非改變遊戲規則的工具,但對於任何大型項目,它絕對是前進的方向。
HTTPX已成為Requests的強大替代品,尤其是在2025年。與Requests不同,HTTPX還提供HTTP/2支持,這可以透過允許多路復用連接來顯著減少延遲並改善請求處理。 httpx是一個現代替代方案,它支援非同步操作,同時又不犧牲Requests API的簡單性和熟悉性。
範例:
<code class="language-python">import httpx import asyncio # asyncio用于启用异步编程,对于httpx的非阻塞HTTP请求来说是不可或缺的。 # 使用httpx,你可以使用async/await语法同时运行多个HTTP请求。 # 演示使用httpx的异步请求 async def async_get_data(): async with httpx.AsyncClient() as client: response = await client.get('https://jsonplaceholder.typicode.com/posts/1') if response.status_code == 200: print("Async Response:", response.json()) else: print(f"Error: {response.status_code}") # 运行异步请求 asyncio.run(async_get_data()) # 使用httpx的异步HTTP/2请求 async def async_http2_request(): async with httpx.AsyncClient(http2=True) as client: response = await client.get('https://http2.golang.org/reqinfo') if response.status_code == 200: print("HTTP/2 Response:", response.text) else: print(f"Error: {response.status_code}") # 运行HTTP/2请求 asyncio.run(async_http2_request()) # 使用httpx客户端进行连接池 def connection_pooling_example(): with httpx.Client(keep_alive=True) as client: url = "https://jsonplaceholder.typicode.com/posts/1" # 使用连接池进行多次请求 for _ in range(5): response = client.get(url) if response.status_code == 200: print("Response Content:", response.text) else: print(f"Error: {response.status_code}") # 运行连接池示例 connection_pooling_example()</code>
為什麼要使用httpx?
如果你正在開發需要高並發性的應用程式(例如網頁抓取或微服務),HTTPX對非同步操作的支援可以顯著提高效能。
HTTPX的另一個關鍵優勢是其對每個主機的預設連線池,這減少了延遲和資源消耗。
基本上,如果你處理大量的I/O,httpx會為你節省很多麻煩。
Pandas非常適合小型到中型數據集,但是當你向其中添加更大的數據集時,內存使用和性能就會開始下降。
諸如內存消耗緩慢、列操作效率低下以及數據轉換(如
.fillna()
和.loc
)方面的困難,是許多使用Pandas的開發人員經常遇到的問題。
Polars是一個現代的、內存高效的、多線程的數據處理庫,它為大型數據集提供了比Pandas更快的替代方案。與Pandas不同,Polars支持並行處理,這加快了數據操作任務的速度。
示例:
<code class="language-python">from pathlib import Path # 创建文件 file = Path("example.txt") file.write_text("Hello, Pathlib!") # 读取文件 print(file.read_text()) # 检查是否存在 if file.exists(): print("File exists")</code>
為什麼要使用Polars?
因此,如果你正在處理大規模數據處理,需要並行執行,或者想要一個內存高效的解決方案,那麼Polars是現代數據科學和分析的最佳選擇。 Pandas可能是你的初戀,但Polars是那個可以處理繁重工作的人。
unittest?當然,它有效,但拜託,現在是2025年了。用它可吸引不了任何人。這就像在每個人都在使用iPhone的時候,試圖用翻蓋手機來吸引某人。是的,它有效,但這完全是一種麻煩。 pytest:這是一個很酷的現代測試框架,它使編寫和閱讀測試變得更容易。
unittest是什麼?
對於不熟悉的人來說,unittest是Python的內置測試框架,但它經常讓人感覺過時,語法冗長,樣板代碼重複。使用pytest,你可以獲得強大的功能,例如靈活的fixture管理、自動測試發現和內置參數化(使用@pytest.mark.parametrize
)以輕鬆使用不同的輸入運行相同的測試。它還支持通過pytest-xdist進行並行測試執行,這提高了大型測試套件的性能。
示例:
<code class="language-python">import httpx import asyncio # asyncio用于启用异步编程,对于httpx的非阻塞HTTP请求来说是不可或缺的。 # 使用httpx,你可以使用async/await语法同时运行多个HTTP请求。 # 演示使用httpx的异步请求 async def async_get_data(): async with httpx.AsyncClient() as client: response = await client.get('https://jsonplaceholder.typicode.com/posts/1') if response.status_code == 200: print("Async Response:", response.json()) else: print(f"Error: {response.status_code}") # 运行异步请求 asyncio.run(async_get_data()) # 使用httpx的异步HTTP/2请求 async def async_http2_request(): async with httpx.AsyncClient(http2=True) as client: response = await client.get('https://http2.golang.org/reqinfo') if response.status_code == 200: print("HTTP/2 Response:", response.text) else: print(f"Error: {response.status_code}") # 运行HTTP/2请求 asyncio.run(async_http2_request()) # 使用httpx客户端进行连接池 def connection_pooling_example(): with httpx.Client(keep_alive=True) as client: url = "https://jsonplaceholder.typicode.com/posts/1" # 使用连接池进行多次请求 for _ in range(5): response = client.get(url) if response.status_code == 200: print("Response Content:", response.text) else: print(f"Error: {response.status_code}") # 运行连接池示例 connection_pooling_example()</code>
為什麼要使用test_?
通過使用test_
前綴,你可以向pytest明確表示這些函數應該是測試。這是pytest的約定的一部分,它無需任何額外配置即可發現和運行正確的函數。
簡而言之,pytest取代了unittest笨拙的設置,使測試更高效、更靈活和更可擴展。
2025年值得更多關注的庫
BeeWare是一個新興的Python框架,尤其是在2025年,它值得更多關注。它允許Python開發者使用相同的程式碼庫在多個平台(桌面、行動、Web)上編寫原生應用程式。與PyQt或Tkinter等傳統的桌面框架不同,BeeWare更進一步,支援在Android、iOS甚至WebAssembly上部署。 BeeWare的一個關鍵特性是其跨平台特性,因此你可以編寫一次應用程序,然後在任何地方運行它。
驗證資料可能是一件苦差事。 pydantic是一個Python函式庫,它根據類型提示來驗證和解析資料。如果你正在處理凌亂或不可靠的資料(例如API回應、使用者輸入或配置),Pydantic可以確保你的資料乾淨、結構化且無錯誤。
Poetry是一個現代的Python工具,用於輕鬆進行依賴管理和專案打包。
它使用pyproject.toml
和poetry.lock
進行版本控制,確保可重複構建,並簡化了發佈到PyPI的過程。它提高了依賴關係圖的透明度,使其成為比pip和setuptools等舊工具更強大的替代方案。
FastAPI是一個高效能的Python框架,通常用作Flask或Django REST Framework的替代方案,用於建立API。由於其可擴展性和效率,它非常適合小型專案和大型應用程式。 FastAPI之所以突出,是因為它整合了Python的類型提示用於資料驗證,並自動產生OpenAPI文檔,使開發更快、更不易出錯。
asyncpg是一個高效能的非同步PostgreSQL資料庫驅動程序,用於Python。想要在你的Python應用程式中進行快速查詢嗎?好的,不再有緩慢的阻塞呼叫會使你的應用程式像你仍在使用撥接上網一樣緩慢。與psycopg2等傳統的同步函式庫不同,asyncpg使用非同步程式來最佳化資料庫操作,而不會阻塞應用程式中的其他任務,這在FastAPI、Tornado或Sanic等現代Web框架中尤其有用。
DuckDB是一個快速、記憶體中的資料庫,旨在有效率地執行複雜的分析查詢。與PostgreSQL等傳統資料庫不同,DuckDB直接使用記憶體中的數據,讓你快速處理大型資料集,而無需外部伺服器。
最終想法
在2025年,是時候重新考慮你的Python工具箱了。雖然Requests和Pandas等經典函式庫有其作用,但httpx、Polars、rich和duckdb等新興函式庫可以簡化你的工作流程。
以上是為什麼要在5中重新考慮Python工具箱的詳細內容。更多資訊請關注PHP中文網其他相關文章!