首頁 > 後端開發 > Python教學 > 命名還是不命名:何時應該在 Python 中為 Lambda 指定名稱?

命名還是不命名:何時應該在 Python 中為 Lambda 指定名稱?

Linda Hamilton
發布: 2024-11-27 14:43:11
原創
807 人瀏覽過

To Name or Not to Name: When Should You Assign Names to Lambdas in Python?

你應該在 Python 中命名 Lambda 嗎?

Lambda 表達式提供了一種簡潔且方便的方法來在 Python 中定義匿名函數。然而,為了程式碼重用和特定功能,在函數中為 lambda 分配名稱通常很誘人。

命名 Lambda 的批判

雖然這種做法看起來很方便,但它通常被認為是非Pythonic並且違背了PEP8的建議。正如 PEP8 所說:

「總是使用 def 語句而不是將 lambda 表達式直接綁定到標識符的賦值語句。」

此建議背後的基本原理是將 lambda定義為function:

  • 提供清晰明確的名稱:與命名 lambda 不同,def語句明確地將函數與有意義的標識符關聯起來。
  • 幫助回溯和字串表示:命名函數在錯誤訊息和字串表示中顯示其特定名稱,提供更好的可讀性。
  • 消除了 lambda 的主要優點:當您指派一個值時,在較大表達式中嵌入匿名函數的能力是多餘的變數為 lambda。

範例

考慮問題中提供的範例函數:

def fcn_operating_on_arrays(array0, array1):
    indexer = lambda a0, a1, idx: a0[idx] + a1[idx]
    
    # ...
    indexed = indexer(array0, array1, indices)
    # ...
登入後複製

而不是使用命名lambda,定義一個單獨的、顯式命名的更Pythonic function:

def index_array(a0, a1, idx):
    return a0[idx] + a1[idx]

def fcn_operating_on_arrays(array0, array1):
    
    # ...
    indexed = index_array(array0, array1, indices)
    # ...
登入後複製

結論

雖然為 lambda 分配名稱在某些情況下似乎很有用,但不建議這樣做。相反,請遵循使用明確函數定義的 Pythonic 原則,以保持清晰度、可讀性並遵守最佳實踐。

以上是命名還是不命名:何時應該在 Python 中為 Lambda 指定名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板