跳到主要内容

Python 匿名函数

lambda 表达式

在 Python 中,匿名函数使用关键字 lambda 来定义,而不再使用 def 语句这样标准的形式定义一个函数。

举个栗子:

def add(v1, v2):
return v1+v2

sum = lambda v1,v2:v1+v2

print("type(add)", type(add))
print(add(10, 20))
print("type(sum)", type(sum))
print(sum(10, 20))

输出结果如下:

type(add) <class 'function'>
30
type(sum) <class 'function'>
30

可以看到,lambda 只是一个表达式,函数体比 def 简单得多。

匿名函数的限制

匿名函数的定义简单,有如下一些特性与限制:

  • 语法:lambda 函数的语法只包含一个语句,如:

    lambda [arg1 [,arg2,, argn]]:expression
  • lambda 主体是一个表达式,而不是代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去;

  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数;

  • 虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率;