在Python軟體開發中,tkinter中command功能的作用是為按鈕、菜單等組件綁定回調函數,用戶操作該組件時會觸發相應的函數執行。 本文涵蓋了各種組件和功能: 1、為Button組件(按鈕)綁定回調函數 import tkinter as tk def say_hello(): print( ...
你好,我是豌豆花下貓。這裡記錄每周值得分享的 Python 及通用技術內容,部分為英文,已在小標題註明。(標題取自其中一則分享,不代表全部內容都是該主題,特此聲明。)
文章&教程
介紹類和對象概念,通過示例展示 Python 中的類和對象如何工作,包括定義、實例化和繼承等。文章出自《Python全景系列》,目前已更新七篇。
2、umongo + motor: 構建高效 MongoDB 應用的最佳組合
介紹如何在 Tornado 中集成 umongo 和 motor,實現用非同步非阻塞的方式與 MongoDB 進行交互。文章出自《tornado 併發編程系列》,目前已更新六篇。
3、徒手使用 LangChain 搭建一個 ChatGPT PDF 知識庫
演示瞭如何使用 langchain 和 ChatGPT 搭建一個本地的 PDF 知識庫,文中使用了 pdfplumber 處理 PDF 文件、使用 streamlit 繪製 UI 界面。知識庫搭建和使用流程圖如下:
4、Python 真的是靠一個 switch 來執行位元組碼的嗎?
一個流行的觀點說:CPython 有一個大switch,會根據不同的 opcode 跳到相應的 case 分支去執行位元組碼。文章提出了質疑,最後的結論是:只要 Python 啟用了 computed goto (比如在 Mac 和 Linux 上),位元組碼的執行就不依賴 switch。而這個功能在 Python 3.2 中就已是預設開啟的。
文章的開頭把我震驚了:“SQLite 源碼有 15 多萬行,但測試代碼和腳本竟有九千多萬行”!文章介紹了 SQLite 的架構,以及多個基於它的開源項目,如 Litefs、sql.js、absurd-sql、postlite、sqlite3vfshttp 等等,回答了為什麼 SQLite 能在如此多領域有創新的項目出現?
6、八十行代碼實現開源的 Midjourney、Stable Diffusion “咒語”作圖工具
通過 Docker 和 80 行左右的 Python 代碼,實現一款類似 Midjourney 官方圖片解析功能 Describe 的 Prompt 工具。提供了兩個版本的工具,分別支持 CPU 和 GPU 推理使用。
7、像寫 Rust 一樣寫 Python(英文)
分享了從 Rust 中學到的一些編程習慣:使用類型提示、使用數據類代替元組或字典、使用代數數據類型、使用“newtype”、使用構造函數、使用互斥鎖等。總體而言,它們並不是那些“個人喜好式”的編程風格,而是切實能提升代碼健壯性和可維護性的編程經驗。
8、一系列的 Flask 小貼士(英文)這個《Flask Tips》欄目已分享了 58 個使用 Flask 的小知識,另外其作者在最新的博文《我開發 Flask 程式時最喜歡用的庫》中,介紹了 APIFairy、Frozen-Flask、Flask-SQLAlchemy 等 10 個常用的庫。
9、Celery 的諸多問題(英文)
Celery 是一個分散式任務隊列庫,用於實現非同步處理和定時任務等功能。但它有很多“問題”,這篇文章一口氣列出了 15 個,是一份避坑指南。不過,並非所有問題都有解決方案,比如說它 API 介面不夠 Pythonic、沒有類型檢查等,這些就只能“Live with it”了……
10、Python 藉助 Gopy 庫實現調用 Go 包(英文)
作者遇到一個靜態驗證 PromQL 查詢的需求,但沒有可用的 Python 庫。文章介紹了使用 Gopy 將 Go 代碼編譯成 wheel 文件的方法,另外也提醒幾個註意事項,比如對錯誤的處理、操作系統的相容性問題、調試和測試的問題。
11、最適用於 Pandas 的文件格式(英文)
使用 Pandas 前需要載入數據,它支持非常多種數據格式,但哪種才最合適呢?文中給出了三個衡量標準(類型支持、磁碟格式、讀寫速率),並測試了三種數據文件(CSV、JSON 和 Parquet),你猜最後的結論是什麼呢?
12、關於 PyPI 的一系列新聞/文章(英文)
PyPI 在 3 月上線了官方博客,5 月初剛宣佈獲得了 AWS 的 14.4 萬美元贊助,用於開設一個新的安全工程師職位。巧的是本周密集出現了幾件與安全相關的事情。
- 5.21,PyPI 在連續一周受到惡意軟體的侵擾後,臨時暫停了新用戶的註冊及新項目的上傳。(這有一篇文章,提到一則有相關性的新聞,這些惡意軟體可能是趁 ChatGPT 的熱點,通過竊取剪貼板內容從而劫持加密貨幣交易)
- 5.23,PyPI 宣佈移除 PGP 簽名,因為近三年上傳的簽名僅有 36% 為有效的,移除這項功能有利於降低維護成本。(這有一篇文章,使用大量數據和統計圖分析了 PyPI 上糟糕的 PGP 情況)
- 5.24,PyPI 發了一篇博客,披露 PSF 收到了美國司法部的三張要求提供 PyPI 用戶數據的傳票,在律師的建議下,他們提供了司法部索要的數據,並公開了傳票的相關細節。
- 5.25,PyPI 發佈《通過雙因素身份驗證保護 PyPI 帳戶》,宣佈在 2023 年底前,PyPI 上的帳戶都必須啟用雙重驗證(2FA),以此提升賬戶的安全性。
- 5.26,PyPI 發佈《減少 PyPI 中存儲的 IP 數據》,介紹了團隊出於不存儲用戶 IP 的目的而做的一些事情,試圖既要保護用戶的隱私,又能更好地運維管理。
項目&資源
1、CyberWaifu:使用 LLM 和 TTS 實現的聊天機器人
使用 LangChain 作為 LLM 主體框架,使用 go-cqhttp 進行 QQ 機器人部署,TTS 支持 vits、edge-tts,語言模型支持ChatGPT 和 Claude。
技術棧: NextJs + TS + ChakraUI + Mongo + Postgres,支持私有化部署,可以線上體驗。
3、jesth:更具可讀性的數據序列化格式(英文)
文檔將這種新格式與 TOML、YAML 和 JSON 分別做了對比,並詳細展示了在 Python 中的使用方法。
4、trogon:為 CLI 程式生成友好的用戶界面(英文)
命令行程式本就是無界面的,但是這對於用戶來說不夠友好。這個項目可以生成美觀的界面,用於編輯和運行命令。
5、ipyflow:用於 Jupyter 筆記本的響應式 Python 內核(英文)
可在互動式會話期間,跟蹤符號和單元格之間的數據流關係,支持的功能:顯示執行建議、支持響應式執行、語法拓展、集成了 ipywidgets,等等。
6、solara:一個純 python、React-風格的框架(英文)
solara 可使用 Reacton(純 Python 實現的 React)創建基於 ipywidget 的程式。可用在 Jupyter Notebook,也可以作為獨立的 Web 程式在 FastAPI 等框架中使用。
7、Python 3.12 的 beta 1 版本已發佈(英文)
3.12 的最終版本計劃在 10 月 2 日發佈,目前發佈了 beta 1 版本,意味著不會再加入新功能。總體而言,這個版本更為精簡了(刪除了很多函數、類和方法),性能方面也有很多優化。值得一提的是,這個版本雖然引入了 PEP-684(每個子解釋器的獨立 GIL),但需要等 3.13 版本實現 PEP-554(標準庫中的多解釋器)後,才真正的可用。
8、對比 Python 與 Rust 的編程習慣用法(英文)
這是一個有意思的網站,可比較不同編程語言在 300 多項習慣用法上的區別,提升學習效率。我們這裡比較了 Python 和 Rust,在網站首頁可選的語言有 30 種。
播客&視頻
1、哈佛大學的 Python 編程入門課程(英文)
哈佛大學電腦科學專業的入門課程,向初學者介紹電腦科學和編程基礎,以及如何使用 Python 進行編程。目前已有 50 萬人參與學習。
2、推薦 10 個最好用的 Django 插件(英文)
這期視頻中,《Django by Example》書籍的作者推薦了 10 個 Django 插件,例如 Django Debug Toolbar、Django REST Framework、Django Channels,等等。
問題&討論
1、Windows 要支持 tar、7-zip、rar、gz 等格式啦?(英文)
來自一則匿名爆料,Windows 要利用開源項目 libarchive 實現對 rar 等格式的支持了。這會是真的麽?
2、構建 API 的最佳語言——TS/JS vs. Python(英文)
從可維護性、優雅性、靈活性和開發速度的角度來看,這兩種語言的 API 開發體驗哪種更好?
贊助&支持
內容創作不易,如果你覺得有幫助,請隨意贊賞、買杯咖啡或在愛發電進行支持!如果你喜歡本周刊,請轉發分享給其他需要的同學~
另誠邀贊助者,歡迎通過私信聯繫。
關於周刊
Python 潮流周刊,精心篩選國內外的 200+ 信息源,為你挑選最值得分享的文章、教程、開源項目、軟體工具、播客和視頻、熱門話題等內容。願景:幫助所有讀者精進 Python 技術,並增長職業和副業的收入。
訂閱方式:Python貓 | RSS | 郵件 | Github | Telegram | Twitter