Python 潮流週刊#25:性能最快的代碼格式化工具 Ruff!

你好,我是貓哥。這裏每週分享優質的 Python、AI 及通用技術內容,大部分爲英文。標題取自其中一則分享,不代表全部內容都是該主題,特此聲明。

本週刊由 Python貓 出品,精心篩選國內外的 250+ 信息源,爲你挑選最值得分享的文章、教程、開源項目、軟件工具、播客和視頻、熱門話題等內容。願景:幫助所有讀者精進 Python 技術,並增長職業和副業的收入。

微信 | 博客 | 郵件 | Github | Telegram | Twitter

本週刊歸檔在 Github 上,已收穫 800+ star 好評,如果對你有幫助,請給顆 star 支持一下吧:https://github.com/chinesehuazhou/python-weekly

🦄文章&教程

1、Ruff:一款極其快、兼容 Black 的 Python 格式化工具

我在今年 4 月份介紹過 性能最快的代碼分析工具 Ruff,當時發現它不侷限於 Linter 的定位,還提供了部分 Formatter 的功能。現在,它發佈了重大更新,正式成爲性能最快的 Python 代碼格式化工具,比 Black 快 30 倍以上,比 YAPF 快 100 倍!

不用緩存,格式化約25萬行代碼的表現

2、你應該什麼時候升級到 Python 3.12?

Python 3.12 已經發布了,你是否迫切想要升級了呢?現在是最佳的升級到 3.12 的時候麼?文章建議你等到 12 月,等發佈 3.12.1 錯誤修復版本後,因爲新版本存在這些問題:不兼容的軟件包、缺少二進制包、每次大版本總有大量的問題要修復。

3、Python 3.12:一個被人忽略的史詩級版本

作者認爲 3.12 對於 Python 的意義,大於 3.5 的“async/await” 和 3.6 的 “Type Hint” 對於 Python 的意義!主要分析了三個方面提升:PEP-669 帶來的可觀測性、PEP-684 爲 non-GIL 帶來的性能提升、PEP-697 全新 C API 保證跨版本兼容性。

4、不要再用 requirements.txt 了

作者給了兩個建議:不要使用 pip 和 requirements.txt 來管理 Python 依賴項,推薦使用 Poetry。pip 的主要問題是沒有 lockfile 和手工管理虛擬環境麻煩。除了 Poetry,作者也提及了 Hatch 和 PDM。

5、爲什麼 Django 後臺管理系統那麼“醜陋”?

Django 提供了一個默認的後臺管理系統,即 Django Admin,它的 UI 很多年沒有變化,顯得設計過時了。爲什麼 Django 維護者們不改善它呢?作者通過詢問多位維護者,得出了它的歷史及如此設計的原因,主要觀點是 Django Admin 面向內部管理員,不應該暴露給終端用戶。

Django Admin管理頁面

6、我遷移棄用 setup.py 的糟糕體驗

PyOxidizer 作者的一篇長文,他在將 Python 3.12 用於另一個庫時,CI 運行python setup.py 提示 setuptools 無法導入。作者在尋求解決方案時,發現 Python 的打包生態非常讓人困惑,他經歷了一系列複雜而耗時的過程。

7、使用 Ptpython 提高你的編碼效率

Ptpython 是一個功能豐富且對用戶友好的 Python REPL,這是一篇非常詳細的使用教程。重點介紹的功能包括歷史記錄、輸入驗證、自動補全、自動處理縮進、自定義交互式 shell、在腳本中嵌入 ptpython 等。

8、100%的測試覆蓋率是不夠的:Python 中基於屬性的測試

測試覆蓋率固然重要,但這項指標並不足以解決所有問題。文章通過示例揭示測試覆蓋率的不足,簡單介紹瞭如何用 Hypothesis 作基於屬性的測試。

9、從零開始編寫一個 Python 異步 ASGI Web 框架

從零開始編寫一個異步 ASGI Web 框架難麼?需要了解哪些知識、實現哪些功能、思考哪些問題?這篇循序漸進的教程是很好的學習材料,讓你瞭解 Web 框架設計、異步編程、功能封裝與項目管理。

一個請求的生命週期

10、Python 如何在日誌中隱藏明文密碼?

不在日誌中打印明文密碼是安全需求,但是有太多可能出現打印密碼的情況,如何能高效地隱藏明文密碼呢?文章介紹了基於 logging 模塊的兩種實現方案:自定義 filter 和自定義 formatter,使用特定規則過濾明文密碼。

11、從混沌到凝聚:構建你自己的 Monorepo

monorepo 是將所有項目都放到一個代碼倉管理,可能包含不同語言和框架。這意味着對它的依賴管理和 CI/CD 等都與普通代碼倉不同。文章介紹如何使用 GitHub Actions 作爲 CI/CD 工具構建簡單的 Python monorepo。

12、Python 是一種編譯型語言

我們通常習慣將 Python 稱爲一種解釋型語言,因爲它在運行時逐行解釋和執行代碼。很多人還知道 Python 其實也有編譯的過程,解釋器會先編譯再執行。然而作者不止步於此,他通過蘇格拉底式對話和幾輪實驗,引導讀者重新思考“解釋”與“編譯”:它們是錯誤的二分法、限制了編程語言的可能性。Python 既是解釋型語言,也是編譯型語言!

🎁Python潮流週刊🎁已免費發佈了 25 期,訪問下方鏈接,即可查看全部內容:https://pythoncat.top/tags/weekly

週末不休息,又更新了一期週刊,我想明天喝杯奶茶了~~

🐿️項目&資源

1、ccxt:加密貨幣交易 API,支持 100 多個交易所

用於加密貨幣交易的 JavaScript/Python/PHP/C# 庫,支持許多比特幣/以太幣/山寨幣交易市場和商家 API。(star 29.5K)

2、uDjango:單文件的 Django 微型項目

這個項目是 DjangoCon US 2023 的演示項目,使用單文件不到 10 行代碼,演示一個最小的 Django 應用。

3、esmerald:高度可擴展、高性能的 Web 框架

基於 Starlette 和 Pydantic 之上構建的開箱即用的 Web 框架,用於構建現代可擴展的 API 應用,支持同步和異步,提供 DAO、ORM、ODM、依賴注入、權限管理等功能。

4、Python-Type-Challenges:通過在線挑戰來學習 Python 類型提示

一個很有意思的項目,它包含從初級到高級的一系列挑戰題目,讓你在線練習 type hint 的使用。

5、mify:微服務基礎架構,代碼生成工具

可生成 OpenAPI http 服務端,內置 Prometheus 指標,提供結構化日誌記錄,支持多種語言代碼生成。

6、de4py:Python 逆向工程工具包

一款高級的 Python 反混淆器,面向惡意軟件分析師和逆向工程師,它擁有精美的 UI 和一些高級功能。

7、public-apis:面向開發者的公共 API 列表

非常非常豐富的公共 API 清單,內容應有盡有。(star 2K)

8、FunASR:端到端語音識別工具包

阿里達摩院開源的語音識別工具包,功能包括語音識別(ASR)、語音端點檢測(VAD)、標點恢復、語言模型、說話人驗證、說話人分離和多人對話語音識別等。(star 1.2K)

9、XHS_Downloader: 小紅書圖文/視頻作品採集工具

支持採集和下載小紅書圖文/視頻作品,支持批量下載,有作品文件完整性處理機制。

10、RSS-GPT:使用 ChatGPT 爲你的 RSS 訂閱源生成摘要

使用 GitHub workflow 自動運行一個簡單的 Python 腳本,調用 OpenAI API 爲 RSS 訂閱源生成摘要,然後將新生成的 RSS 訂閱源推送到 GitHub Pages。配置簡單快速,無需服務器。

11、codespell:檢查代碼是否存在常見拼寫錯誤

用於檢查源代碼中拼寫錯誤的單詞,支持多種運行方式,可指定忽略單詞和文件,可用於 pre-commit。(star 1.5K)

12、codeshell:多語言代碼大模型基座

具有 70 億參數,在五千億 Tokens 進行了訓練,上下文窗口長度爲 8192。在權威的代碼評估Benchmark 上,CodeShell 取得同等規模最好的性能。(star 1.2K)

🐱贊助&支持

如果你喜歡週刊,請分享給其他需要的同學,讓更多人可以從中受益~

如果你覺得週刊有價值,請隨意讚賞買杯咖啡 進行支持!

如果你想幫助週刊辦得更好,歡迎向我們投稿或提出建議:投稿/建議通道

如果你是品牌方或廣告主,歡迎私信我,洽談贊助與合作事項。

🐼歡迎訂閱

  • 微信公衆號:除更新週刊外,還發布其它原創作品,並轉載一些優質文章。(可加好友,可加讀者交流羣)
  • 博客RSS:我的獨立博客,上面有歷年原創/翻譯的技術文章,以及從 2009 年以來的一些隨筆。
  • Github:你可以獲取本週刊的 Markdown 源文件,做任何想做的事!
  • 郵件:在 Substack 上開通的頻道,滿足你通過郵件閱讀時事通訊的訴求。
  • Telegram:除了發佈週刊的通知外,我將它視爲一個“副刊”,補充發布更加豐富的資訊。
  • Twitter:我的關注列表裏有大量 Python 相關的開發者與組織的賬號。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章