我开始欣赏lambda表达式在Python中的价值,特别是当涉及到函数式编程,map
,functions returning functions等等。但是,我也一直在函数内命名lambda,因为:pythonic是否pythonic:命名lambdas
- 我需要几次相同的功能并且不想重复代码。
- 该功能是特定于它出现的功能;其他地方不需要。
当我遇到满足上述条件的情况时,我一直在编写一个命名的lambda表达式,以实现DRY和狭义范围的功能。例如,我正在编写一个可以在一些numpy
数组上运行的函数,并且我需要对传递给该函数的所有数组进行适度繁琐的索引(这可以轻松地放在一行中)。我写了一个名为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
这是滥用python的lambdas吗?我应该把它吸起来并定义一个单独的函数吗?
编辑
也许值得链接function inside function。
不,它不是Python的。根据定义,lambda是匿名函数,用于简化函数作为参数的使用(就像在'sort()'中),你可以命名它,但你最好使用已知的'def',这更容易理解。 – Delgan