lambda语法糖:无需定义函数名的简便方法
lambda
是希腊字母的第11个字λ
(大写Λ
,小写λ
)
Python 中定义函数有两种方法,一种是用常规方式 def 定义,函数要指定名字,第二种是用 lambda 定义,不需要指定名字,称为 Lambda 函数。
Lambda 函数又称匿名函数,匿名函数就是没有名字的函数。有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可。(否则只使用一次就建立一个函数,会带来"环境污染")
简单的lambda函数:
同于常规函数
函数式编程
尽管 Python 算不上是一门纯函数式编程语言,但它本身提供了很多函数式编程的特性,像 map
、reduce
、filter
、sorted
这些函数都支持函数作为参数,lambda
函数就可以应用在函数式编程中。
一个整数列表,要求按照列表中元素的绝对值大小升序排列
排序函数sorted
支持接收一个函数作为参数,该参数作为sorted
的排序一句。这里按照列表元素的绝对值进行排序。以下是采用普通函数来实现的方法:
但是这种方法不简洁清晰。
闭包
闭包
是一个晦涩难懂的概念,这里简单粗暴理解为闭包就是定义在一个函数内部的函数
,闭包使得变量即使脱离了该函数的所用域范围也依然能够被访问到。
一个用 lambda 函数作为闭包的例子:
这里的lambda函数就是一个闭包,在全局作用域范围内,add_3(7)
可以正常执行并返回值10是因为在my_add
局部作用域中,变量n的值在闭包的作用使得它在全局作用域也可以被访问到。
换成常规函数也可以实现闭包,只不过是这种方式稍显啰嗦:
如果用 lambda 函数不能使你的代码变得更清晰时,这时你就要考虑使用常规的方式来定义函数。
参考
Last updated