Python 發展趨勢:與 Rust 深度融合、更易於編寫 Web 應用

豌豆花下貓發表於2023-02-12

大家好,我是貓哥,好久不見!2022 年末的時候,我不可避免地陽了,藉著身體不舒服就停更了,接踵而至的是元旦和春節假期,又給自己放了假,連年終總結也鴿了,一懈怠就到了 2 月中旬……

現在是我家娃出生的第三個月,全家人大部分的時間和精力都在他身上,結果是幸福與疲累共存。新生兒是那麼的可愛,又是那麼的“吵鬧”,影響著我們的情緒和生活節奏。這三個月的基調跟過去的日子完全不同,它是新一年的開始,是未來日子的底色,引導著我們的生活重心偏移。

在過去的兩年時間裡,我工作上的任務與 Python 基本無關了,轉向了 Java 的陣營。然而,在業餘時間裡,我對 Python 的熱情一直不滅(儘管有退減),直到近期,懶怠的念頭變多了。

身心狀態與家庭節奏是這段時間停更的主要原因吧。

今年的這第一篇文章,就當作給大家問聲好,給自己打個氣吧。唯願 2023 年,家庭、工作與興趣都能順順利利,不留遺憾,相信前方有美好的未來!


最近的 Pycoder‘s Weekly 中有一篇《Three Python trends in 2023》,它介紹了當下較為熱門的三個話題。我簡略翻譯/摘錄出來,分享給大家。

趨勢一:Python?Rust

Rust 對 Python 技術生態的影響越來越大了。關鍵的賦能者是 PyO3,它為 Python 提供了 Rust 繫結。有了 PyO3 後,Python 可以輕鬆呼叫 Rust 程式碼,同時 Rust 也能執行 Python 程式碼。

另外,下面的工具在進一步加深這兩門語言的友誼:

  • pydantic-core:pydantic v2 的校驗核心。pydantic 的作者 Samuel Colvin 將在 Pycon 2023 上發表相關演講
  • ruff:速度極快的 linter。它擁有幾乎與 Flake8 相同的功能,包括一些流行的外掛。此外,它具有與 autoflake、isort、pydocstyle 和 pyupgrade 等工具相同的功能。因此,它基本上是檢測 Python 程式碼的瑞士軍刀。
  • polars:更快的 DataFrames,是超級廣泛使用的 pandas 的效能競爭對手。
  • Robyn:帶 Rust 執行時的非同步 Python web 框架。這有一篇部落格關於《Robyn 的 2023 年路線圖》。

Rust 目前的熱度極高,未來它將融入到更多 Python 相關的專案和工具中。Python + Rust 的組合在未來的就業市場上,也可能有很高的需求。

趨勢二:Web 應用

從歷史上看,使用者介面並不是 Python 的強項。然而,最近機器學習和資料應用的興起,催生了一批”使用純 Python 的 Web UI”框架,例如 StreamlitNiceGUIPynecone。這樣的框架為 Pythonistas 提供了構建 Web 應用的快捷方式,不再需要學習 JavaScript+HTML+CSS 技術棧。

另一條線路是瀏覽器中的 Python。透過 PyodidePyScript和相關工具,這已經實現了。它的基礎推動者是與所有主流瀏覽器相容的 WASM (WebAssembly)。在寫本文時, CPython 原始碼庫中已經有了對 CPython 的 WASM 構建的實驗性支援。如果你想深入瞭解,可以檢視 Python 3.11 in the Web Browser,這是 Cristian Heimes 在 PyConDE 2022 上的演講。

WASM 的故事還處於早期階段,但它有著巨大的潛力,將使 Python 更容易訪問並支援新的使用場景。我希望在不久的將來這個領域會有大量的創新。

趨勢三:型別安全

CPython 對型別的支援在不斷髮展。例如,Python 3.10 釋出了 4 個與型別相關的 PEP, 3.11 釋出了 5 個。此外,PyCon 還有專門的 Typing Summit。與此同時,與型別相關的工具已經成熟化和多樣化。例如,現在有一大把靜態型別檢查器可供選擇(例如 mypy、Pyright、pytype 和 Pyre)。此外,一些包(例如 pydantic)可以在執行時巧妙地利用型別資訊。(延伸閱讀:介紹幾款 Python 型別檢查工具

*args, **kwargs 的時代即將結束,它們將被帶有型別註釋的簽名所取代。型別極大地提高了程式碼可讀性。當可讀性與便利的 IDE 相結合,閱讀龐大的 Python 程式碼庫將變得相對容易。另一方面,在習慣了型別資訊帶來的超能力之後,無型別的程式碼庫會更讓人感到難受。

無論現今和未來的趨勢如何,Python 比以往任何時候都更受歡迎。在寫本文時(2023 年 2 月),PyPI 中有 431k 個專案和 665k 個使用者。在“how often language tutorials are searched in Google”中,Python 以 27.93% 的份額領先(來源)。Reddit 上的 r/Python 話題有 1.1 萬訂閱,r/learnpython 有 68 萬訂閱。

相關文章