您應該在 Python 中命名匿名 Lambda 函數嗎?

Barbara Streisand
發布: 2024-11-23 05:10:14
原創
340 人瀏覽過

Should You Name Anonymous Lambda Functions in Python?

Python 中的匿名函數命名:一種Pythonic 方法

在Python 中,lambda 表達式來提供了一種便捷的方式來建立匿名函數,從而快速、簡潔程式碼。然而,問題出現了:在函數中命名這些 lambda 是否符合 Python 標準?

根據 PEP8 風格指南,不鼓勵將 lambda 表達式直接指派給識別符。這種做法模糊了匿名函數和命名函數之間的區別,使得偵錯和程式碼可讀性變得更加困難。

何時避免命名 Lambda

根據經驗,避免命名如果該功能特定於封閉函數並且程式碼庫中的其他地方不需要,則為 lambda。在這種情況下,lambda 的簡單性和簡潔性超過了命名它們的需要。

命名Lambda 的替代品

當功能需要重複使用或共享時,請考慮以下替代方案:

  • 定義單獨的函數: 在封閉範圍之外建立一個命名函數並在需要時呼叫它。這種方法可確保清晰度並促進程式碼重複使用。
  • 使用高階函數: 利用以其他函數作為參數的高階函數。這允許您傳遞匿名函數而無需顯式命名。

範例

請考慮以下程式碼:

def fcn_operating_on_arrays(array0, array1):
    indexer = lambda a0, a1, idx: a0[idx] + a1[idx]
    
    # codecodecode
    
    indexed = indexer(array0, array1, indices)
    
    # codecodecode in which other arrays are created and require `indexer`
    
    return the_answer
登入後複製

改為命名lambda 表達式索引器時,可以使用單獨的函數重寫它:

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

def fcn_operating_on_arrays(array0, array1):
    indexed = indexer(array0, array1, indices)
    
    # codecodecode in which other arrays are created and require `indexer`
    
    return the_answer
登入後複製

以上是您應該在 Python 中命名匿名 Lambda 函數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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