什麼是 Python 中的 Decorators? 使用程式碼範例進行解釋

https://www.freecodecamp.org/news/decorators-in-python-tutorial/

Python 裝飾器是一種能夠以程式碼範例解釋的函數,它接受另一個函數作為參數,添加某些功能並返回一個新函數。此功能讓您能夠”包裹”另一個函數,以擴展其行為(在原始函數的程式碼之前或之後添加一些功能),而無需修改原始函數的程式碼。

Python 以@符號提供更易讀的方式來應用裝飾器的語法。

裝飾器可以處理具有參數的函數,藉由使用*args 和**kwargs 來修改裝飾器來接受任意數量的位置和關鍵字參數。

此外,您還可以使用類別方式建立裝飾器,這種方式提供更大的彈性,並且對於複雜的裝飾器來說更易讀。

via freeCodeCamp Press Releases

June 19, 2024 at 07:07AM

Python Bytes: #388 請勿刪除所有的儲存庫

https://pythonbytes.fm/episodes/show/388/dont-delete-all-the-repos

Python Bytes 第 388 集主要討論 PSF 選舉即將開始,以及雲工程師因清除前僱主程式儲存庫而被判刑。此外,還介紹了使用 pkgutil.resolve_name()以及 DuckDB 1.0 版本的相關資訊。在額外消息中,還分享了一些有關 NumPy 2.0 和 htmx 2.0.0 的最新資訊,以及一些 PyCharm Pro 的免費資訊和即將推出的 Talk Python 資訊。同时還分享了一個關於.gitignore 的笑話。详情请访问 https://www.youtube.com/watch?v=yweZO_BiYfw。

via Planet Python

June 19, 2024 at 03:50AM

在 Amazon CodeCatalyst 套件存放庫中引入 Maven、Python 和 NuGet 支援

https://aws.amazon.com/about-aws/whats-new/2024/06/maven-python-nuget-support-amazon-codecatalyst-package-repositories

AWS 宣布在 Amazon CodeCatalyst 套件存儲庫中加入了對 Maven、Python 和 NuGet 套件格式的支持。CodeCatalyst 客戶現在能夠安全地存儲、發布和共享 Maven、Python 和 NuGet 套件,並使用 mvn、pip、nuget 等流行的套件管理工具。透過您的 CodeCatalyst 套件存儲庫,您還可以從其他 6 個公共套件註冊處獲取開源套件。如果其他服務提供商的公共套件和註冊處不可用,您的套件將繼續為開發團隊提供支持。

via Recent Announcements

June 19, 2024 at 01:06AM

實際 Python: 在 Python 中四捨五入數字

https://realpython.com/courses/rounding-numbers-python/

許多企業正在轉向 Python 強大的數據科學生態系統來分析他們的數據,了解如何避免將偏見引入數據集絕對至關重要。知道如何在 Python 中進行四捨五入有助於避免數據偏見,這是一項重要技能。在這個視頻課程中,你將學習如何四捨五入數字以及其影響數據的方法。

via Planet Python

June 19, 2024 at 12:50AM

邁克·德里斯科爾: 如何將 Python 套件發布到 PyPI

https://www.blog.pythonlibrary.org/2024/06/18/how-to-publish-a-python-package-to-pypi/

Mike Driscoll: 如何將 Python 套件發布至 PyPI

想與世界分享您的 Python 套件嗎?您應將其發布在 Python Package Index (PyPI)上。大多數 Python 套件都在此處發布。PyPI 團隊也提供廣泛的文件以協助您的套件之旅。本文將以 ObjectListView 為例縮短並概述其相關資訊。

ObjectListView 是基於 C#包裹.NET ListView,用於 wxPython 的 Python 項目。您可將其做為 wx.ListCtrl 的替代品,因其方法和屬性較為簡單。本文將介紹其如何再次分支並創建 ObjectListView3,以便發布至 PyPI。

創建套件結構,選擇建構後端,設定元數據,編寫 README 和設定許可證,生成套件,以及上傳/發布至 PyPI 等步驟均在此篇文章中具體介紹。

網誌全文:https://ift.tt/Rj3kbTw

這便是將 Python 套件發布至 PyPI 的方法,
整個過程請簡要閱讀文章內容。

via Planet Python

June 18, 2024 at 09:46PM

編碼遺產: 在 Nuitka 中新增資料檔案 (Python 檔案、影像等)

https://coderslegacy.com/adding-data-files-in-nuitka-python-files-images-etc/

Nuitka 是一個將 Python 代碼轉換為可執行二進制文件的編譯器。想要將圖片、音訊、影片,以及其他 Python 文件包括在 Nuitka 獨立執行檔中可能有些麻煩。本指南介紹了在 Nuitka 獨立執行檔中加入各種數據文件的步驟。

若已安裝 Nuitka,則可透過 pip 安裝:

pip install nuitka

未來建議使用 Nuitka 配置文件,可以將所有依賴項、數據文件和導入寫入單一文件,可以反覆執行多次。

透過 –include-data-files 和 –include-data-dir 選項,您可以在 Nuitka 編譯的執行檔中包含所有必要的數據文件,確保獨立應用程式擁有運行所需的所有資源。

via Planet Python

June 18, 2024 at 06:47PM

一流函式、高階函式和閉包在Python中

https://www.freecodecamp.org/news/first-class-functions-and-closures-in-python/

Python 中的一等函數、高階函數和閉包

在現代編程中,了解一等函數、高階函數和閉包等概念至關重要。這些概念有助於我們撰寫靈活高效的程式碼,並為許多高級編碼技術奠定基礎。

一等函數和高階函數使我們可以將函數視為變數,使我們的程式碼更加強大和可重複使用。而閉包則更進一步,允許函數記住其所在範圍的變數。

這份教學將深入探討這些概念,並解釋它們之間的相互關聯,並提供實際編碼示例加以說明。

via freeCodeCamp Press Releases

June 18, 2024 at 09:25AM

如何處理 Python 中的 KeyErrors How to Handle KeyErrors in Python

https://www.freecodecamp.org/news/how-to-handle-keyerror-exceptions-in-python/

這是 “如何處理 Python 中的 KeyError” 的相關內容:

在 Python 中使用字典時,經常會遇到 KeyError 例外。

字典是內建的鍵值對數據結構。透過 key 可以在常數時間內查找對應的 value。但如果 key 在字典中不存在時,就會觸發 KeyError 例外。

處理 KeyError 有幾種不同的方式。你可以透過 try-except 區塊明確處理它們,或使用特定的字典方法為缺少的鍵設置默認值。在這篇教程中,我們將透過編寫一個簡單的示例來學習以下方法:

1. 使用 try-except 區塊處理 KeyError 的例外
2. 使用字典方法 get()
3. 使用來自 collections 模組的 defaultdict

讓我們開始吧。

完整內容請查閱原文。

via freeCodeCamp Press Releases

June 18, 2024 at 06:57AM

真實 Python:Ruff:適用於無錯誤和可維護代碼的現代 Python Linter

https://realpython.com/ruff-python/

Ruff 是一個現代 Python 程式碼檢查工具,能快速分析並尋找錯誤、格式風格問題和可疑的程式碼結構。本教學將教您如何安裝 Ruff、檢查程式碼錯誤、自動修復錯誤、格式化程式碼以及增加配置。安裝 Ruff 無需複雜指令,可透過 pip、Homebrew 和 conda 進行安裝。透過 ruff version 指令可驗證安裝是否成功,並進行程式碼檢查。

via Planet Python

June 18, 2024 at 12:44AM

理解 Python 閉包的奇妙之處 Understanding a Python Closure Oddity

https://utcc.utoronto.ca/~cks/space/blog/python/UnderstandingClosureOddity

Python 閉包的奇特現象

Glyph 最近在 Fediverse 上指出了 Python 的一個奇異之處,這讓我花了一些時間才理解發生了什麼。部分是因為我最近在用 Go 寫程式,Go 在類似的程式碼中有不同的問題。讓我們從程式碼開始吧:

此 Python 程式碼裡的奇特之處在於,’eagerly’和’lazily’最終產生了不同的結果,而原因是什麼。程式碼中的首要事項是,雖然’number’只被用在迴圈中,但它是一個普通的函式區域變數。我們可以在迴圈之前設置它,並在迴圈之後查看它,如果我們這麼做了,那麼在迴圈結束時它將是’9’。結果和推論是,for 迴圈中返回的每個閉包都使用相同的’number’區域變數。

這也意味著,如果多次調用單個’each’函數,它返回的值可能會有所不同。

這就是’eagerly’和’lazily’之間的差異。對於’eagerly’,列表理解迭代了’loop()’的結果並立即調用獲取的每個版本的’each’,這取得了當時有效的’number’值。對於’lazily’,’list(loop())’首先收集所有’each’閉包,這導致’loop’函數中的’for’迴圈結束,意味著’number’現在是’9’,然後調用所有’each’閉包,這些閉包都返回’number’的最終值。

‘eagerly’和’lazily’的名稱可能有點混淆(對我來說是這樣)。它們指的是我們是否急於或懶惰地調用’loop()’返回的每個閉包。在’eagerly’中,我們立即調用閉包;在’lazily’中,我們僅在稍後調用它們,即在’for’迴圈結束後,’number’已經取得了它的最終值。

(我寫這篇文章部分是為了自己,因為有一天我可能會在我的 Python 代碼中遇到類似的問題。如果你只使用類似’eagerly’情況的程式碼模式,這樣的問題可能潛伏一段時間。)

via Hacker News

June 17, 2024 at 09:49PM