首页 >后端开发 >Python教程 >命名还是不命名:何时应该在 Python 中为 Lambda 指定名称?

命名还是不命名:何时应该在 Python 中为 Lambda 指定名称?

Linda Hamilton
Linda Hamilton原创
2024-11-27 14:43:11748浏览

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