匿名函数用维基百科的解释就是:一种无需定义标识符(函数名)的函数或子程序。
目前在Java,C++,以及python中都支持匿名函数的使用,通常匿名函数理解起来要比普通函数困难一些,那么为什么还要使用匿名函数呢,因为非匿名函数在定义时就创建了函数对象和作用域对象,即使不调用,也会占用内存;而匿名函数只有在调用的时候才会临时创建对象,调用完,就会释放,相比来说匿名函数更节省空间。
在python中用关键字lambda来表示匿名函数,形式如下
lambda 变量名:函数表达式
下面看一下lambda匿名函数的简单示例:
匿名函数也是个函数对象,可以将其赋值给一个变量,比如上面式子中的square和sum,然后再用变量调用函数。
可以看到,在lambda函数中,变量个数可以为一个或多个,但是,函数表达式只能有一个,如果表达式有多个,会报错,如下:
lambda匿名函数不需要return,返回值就是函数表达式要计算的结果。正因为lambda匿名函数的函数表达式只能有一个,决定了匿名函数无法完成过于复杂的操作。这也符合“万事没有十全十美”,如果匿名函数既能节省内存,又能完成非匿名函数的各种功能,那非匿名函数就没有存在的必要了。