Python匿名函数

通常, 函数是如下定义的:

def 函数名(参数列表):
    函数体

这样的函数称为命名函数.

与命名函数相对应的是匿名函数(又称lambda表达式), 定义匿名函数的语法格式为:

lambda [args]: expression

lambda是定义匿名函数的关键字, [args]作为可选参数, 表示函数的参数列表.

Python对匿名函数的支持有限, 只能在一些简单的情况下使用匿名函数. 匿名函数只能有一个ie表达式, 不需要使用return关键字, 表达式的值就是函数的返回值.

匿名函数是一个函数对象, 可以将匿名函数赋值给一个变量, 这样就可以通过该变量来调用匿名函数:

var = lambda [args]: expression
var()

还可以将匿名函数作为函数的返回值.

例如, 定义一个常规函数计算两个数之和:

def add(x, y):
    return x + y

print(add(2, 3))

定义一个匿名函数计算两个数之和:

add = lambda x, y: x + y
print(add(2, 3))

可以这样理解匿名函数, 其实就是简单函数(函数体只有一行)的简写版本. 相比常规函数, 匿名函数具有以下优势:

  • 对于单行函数, 使用匿名函数可以省去定义函数的过程, 让代码更加简洁;

比如, 当我们将函数作为参数传递时, 有些时候, 直接传入匿名函数比显式定义函数更方便.

  • 使用匿名函数, 因为函数没有名称, 不必担心函数名冲突;
  • 对于不需要多次复用的函数, 使用匿名函数可以在使用完之后立即释放, 提高程序执行的性能.

注解

匿名函数就是简单常规函数的简写形式, 常规函数能使用的地方, 匿名函数都能使用.

常规函数的一些特点, 比如赋值给变量, 作为参数传递给其它函数, 作为其它函数的返回值, 匿名函数也都支持.