在 Python 中,lambda 表達式被設計為匿名函數。然而,一些開發人員發現在函數內命名 lambda 有助於程式碼重複使用和特定功能。然而,這種做法提出了一個問題:它符合 Pythonic 原則嗎?
根據 Python 風格指南 PEP8,不鼓勵命名 lambda。相反,它建議使用 def 語句來定義具有特定名稱的函數。這確保了清晰度,簡化了回溯,並消除了使用 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 fcn_operating_on_arrays(array0, array1): def indexer(a0, a1, idx): return a0[idx] + a1[idx] # codecodecode indexed = indexer(array0, array1, indices) # codecodecode in which other arrays are created and require `indexer` return the_answer
透過使用巢狀函數,功能仍然特定於外部函數,提供命名函數,並遵循Pythonic原則。
以上是Python 中的 Lambda 命名是否被視為 Pythonic?的詳細內容。更多資訊請關注PHP中文網其他相關文章!