Python 發(fā)展趨勢:與 Rust 深度融合、更易于編寫 Web 應(yīng)用
作者 l 豌豆花下貓
來源 l Python貓(ID:python_cat)
大家好,我是貓哥,好久不見!
2022 年末的時候,我不可避免地陽了,借著身體不舒服就停更了,接踵而至的是元旦和春節(jié)假期,又給自己放了假,連年終總結(jié)也鴿了,一懈怠就到了 2 月中旬……
現(xiàn)在是我家娃出生的第三個月,全家人大部分的時間和精力都在他身上,結(jié)果是幸福與疲累共存。新生兒是那么的可愛,又是那么的“吵鬧”,影響著我們的情緒和生活節(jié)奏。這三個月的基調(diào)跟過去的日子完全不同,它是新一年的開始,是未來日子的底色,引導(dǎo)著我們的生活重心偏移。
在過去的兩年時間里,我工作上的任務(wù)與 Python 基本無關(guān)了,轉(zhuǎn)向了 Java 的陣營。然而,在業(yè)余時間里,我對 Python 的熱情一直不滅(盡管有退減),直到近期,懶怠的念頭變多了。
身心狀態(tài)與家庭節(jié)奏是這段時間停更的主要原因吧。
今年的這第一篇文章,就當(dāng)作給大家問聲好,給自己打個氣吧。唯愿 2023 年,家庭、工作與興趣都能順順利利,不留遺憾,相信前方有美好的未來!
最近的 Pycoder‘s Weekly 中有一篇《Three Python trends in 2023》,它介紹了當(dāng)下較為熱門的三個話題。我簡略翻譯/摘錄出來,分享給大家。
趨勢一:Python??Rust
Rust 對 Python 技術(shù)生態(tài)的影響越來越大了。關(guān)鍵的賦能者是 PyO3,它為 Python 提供了 Rust 綁定。有了 PyO3 后,Python 可以輕松調(diào)用 Rust 代碼,同時 Rust 也能執(zhí)行 Python 代碼。
另外,下面的工具在進(jìn)一步加深這兩門語言的友誼:
- pydantic-core:pydantic v2 的校驗核心。pydantic 的作者 Samuel Colvin 將在 Pycon 2023 上發(fā)表相關(guān)演講。
- ruff:速度極快的 linter。它擁有幾乎與 Flake8 相同的功能,包括一些流行的插件。此外,它具有與 autoflake、isort、pydocstyle 和 pyupgrade 等工具相同的功能。因此,它基本上是檢測 Python 代碼的瑞士軍刀。
- polars:更快的 DataFrames,是超級廣泛使用的 pandas 的性能競爭對手。
- Robyn:帶 Rust 運行時的異步 Python web 框架。這有一篇博客關(guān)于《Robyn 的 2023 年路線圖》。
Rust 目前的熱度極高,未來它將融入到更多 Python 相關(guān)的項目和工具中。Python + Rust 的組合在未來的就業(yè)市場上,也可能有很高的需求。
趨勢二:Web 應(yīng)用
從歷史上看,用戶界面并不是 Python 的強(qiáng)項。然而,最近機(jī)器學(xué)習(xí)和數(shù)據(jù)應(yīng)用的興起,催生了一批”使用純 Python 的 Web UI”框架,例如 Streamlit、NiceGUI 和 Pynecone。這樣的框架為 Pythonistas 提供了構(gòu)建 Web 應(yīng)用的快捷方式,不再需要學(xué)習(xí) JavaScript+HTML+CSS 技術(shù)棧。
另一條線路是瀏覽器中的 Python。通過 Pyodide、PyScript和相關(guān)工具,這已經(jīng)實現(xiàn)了。它的基礎(chǔ)推動者是與所有主流瀏覽器兼容的 WASM (WebAssembly)。在寫本文時, CPython 源碼庫中已經(jīng)有了對 CPython 的 WASM 構(gòu)建的實驗性支持。如果你想深入了解,可以查看 Python 3.11 in the Web Browser,這是 Cristian Heimes 在 PyConDE 2022 上的演講。
WASM 的故事還處于早期階段,但它有著巨大的潛力,將使 Python 更容易訪問并支持新的使用場景。我希望在不久的將來這個領(lǐng)域會有大量的創(chuàng)新。
趨勢三:類型安全
CPython 對類型的支持在不斷發(fā)展。例如,Python 3.10 發(fā)布了 4 個與類型相關(guān)的 PEP, 3.11 發(fā)布了 5 個。此外,PyCon 還有專門的 Typing Summit。與此同時,與類型相關(guān)的工具已經(jīng)成熟化和多樣化。例如,現(xiàn)在有一大把靜態(tài)類型檢查器可供選擇(例如 mypy、Pyright、pytype 和 Pyre)。此外,一些包(例如 pydantic)可以在運行時巧妙地利用類型信息。
*args, **kwargs 的時代即將結(jié)束,它們將被帶有類型注釋的簽名所取代。類型極大地提高了代碼可讀性。當(dāng)可讀性與便利的 IDE 相結(jié)合,閱讀龐大的 Python 代碼庫將變得相對容易。另一方面,在習(xí)慣了類型信息帶來的超能力之后,無類型的代碼庫會更讓人感到難受。
無論現(xiàn)今和未來的趨勢如何,Python 比以往任何時候都更受歡迎。在寫本文時(2023 年 2 月),PyPI 中有 431k 個項目和 665k 個用戶。在“how often language tutorials are searched in Google”中,Python 以 27.93% 的份額領(lǐng)先(來源)。Reddit 上的 r/Python 話題有 1.1 萬訂閱,r/learnpython 有 68 萬訂閱。
[1] Three Python trends in 2023: https://blog.jerrycodes.com/python-trends-in-2023/
[2] PyO3: https://github.com/PyO3/pyo3?
[3] pydantic-core: ?https://github.com/pydantic/pydantic-core?
[4] 在 Pycon 2023 上發(fā)表相關(guān)演講: ?https://twitter.com/samuel_colvin/status/1615044553425424384?
[5] ruff: ?https://github.com/charliermarsh/ruff?
[6] polars: ?https://github.com/pola-rs/polars?
[7] Robyn: ?https://github.com/sansyrox/robyn?
[8] Robyn 的 2023 年路線圖: ?https://sansyrox.medium.com/robyns-plans-for-2023-7eda52011563?
[9] Streamlit: ?https://github.com/streamlit/streamlit?
[10] NiceGUI: ?https://github.com/zauberzeug/nicegui? [11] Pynecone: ?https://github.com/pynecone-io/pynecone?
[12] Pyodide: ?https://pyodide.org/en/stable/?
[13] PyScript: ?https://pyscript.net/?
[14] Python 3.11 in the Web Browser: ?https://youtu.be/oa2LllRZUlU?
[15] 來源: ??https://pypl.github.io/PYPL.html??
作者簡介 ▽
豌豆花下貓,生于廣東畢業(yè)于武大,現(xiàn)為蘇漂程序員,有一些極客思維,也有一些人文情懷,有一些溫度,還有一些態(tài)度。