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

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

Linda Hamilton
Linda Hamilton原創
2024-11-27 14:43:11795瀏覽

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