Python(lambda)中的匿名函数

Posted

技术标签:

【中文标题】Python(lambda)中的匿名函数【英文标题】:Anonymous function in Python(lambda) [duplicate] 【发布时间】:2020-04-25 11:13:20 【问题描述】:

我在看,但我不明白匿名函数和普通函数之间的区别。

python(lambda) 中的匿名函数:

triangle_area = lambda base, height: (base, height) / 2

普通函数:

def triangle_area(base, height):
     return (base, height) / 2

但是当我为我调用函数时是一样的,无论你创建函数的方式如何。

triangle_area(10,7)

我希望我能很好地解释自己。

感谢您的帮助。

【问题讨论】:

匿名函数主要是为了节省空间。如果你是用过一次,或者非常简单的话,最好把它做成一行然后搞定。 匿名函数实际上应该始终保持匿名,例如一个关键函数sorted(lst, key = lambda x: len(x)**2 或一个函数列表[lambda x: x, lambda x: x /2] 等等——还有一些其他的区别,你可以在一个lambda表达式中做所有你可以在常规def函数中做的事情 【参考方案1】:

理想情况下,您永远不会以第一种方式编写它; “命名 lambdas”实际上是 against the recommendations of PEP8:

始终使用 def 语句而不是将 lambda 表达式直接绑定到标识符的赋值语句。

是的:

def f(x): return 2*x

没有:

f = lambda x: 2*x

Lambdas 很有用,但是当您不需要为函数命名时:

map(lambda n: n * 2, [1, 2, 3])

这与以下内容基本相同:

def double(n):
    return n * 2

map(double, [1, 2, 3])

但前者更简洁。

【讨论】:

讨厌我的命名空间被简短易读的 PEP8 兼容名称污染;) 无论如何这都不是一个主要的缺点(实际上更多的是事后考虑)

以上是关于Python(lambda)中的匿名函数的主要内容,如果未能解决你的问题,请参考以下文章

python编程_匿名函数_lambda

匿名函数

python之匿名函数以及在内置函数中的使用

Python匿名函数lambda是什么?为什么要匿名?怎么用?

python中匿名函数lambda如何用

Python 3 之 lambda匿名函数详解