Python 匿名函数
一、匿名函数概述:
在Python中,除了def定义的函数外,还有一种使用lambda定义的匿名函数
。它可以用在任何普通函数可以使用的地方,但在定义时被严格限定为单一表达式
。
二、简单使用:
在Python中,我们使用def
语句来定义函数:
举个栗子:
def add(x, y):
return x + y
除了上面定义函数外,Python还提供了一个关键字lambda
,简单理解就是没有名称的函数:
举个栗子:
lambda x,y: x+y
- 关键字lambda说明它是一个匿名函数,
冒号:前面的变量是该匿名函数的参数,冒号:后面的是函数的返回值
- 注意:这里不使用return关键字,进行函数的返回值
三、函数调用:
最直接的调用:
(lambda x: x + 3)(3)
# 输出结果:6
匿名函数本质上是一个函数对象,也可以将其赋值给另一个变量,再由该变量来调用函数:
f = lambda x: x + 3
f
# 输出结果:<function __main__.<lambda>>
f(3)
# 输出结果:6
四、使用场景:
不使用匿名函数的写法:
def func(func, my_list):
"""创建一个函数: func参数也是一个函数, my_list 参数是一个列表"""
return [func(item) for item in my_list]
def add(x):
"""普通的加法"""
return x + 1
result = func(add, [1, 2, 3, 4, 5])
print result
# 输出结果:[2, 3, 4, 5, 6]
使用匿名函数的写法:
def func(func, my_list):
"""创建一个函数: func参数也是一个函数, my_list 参数是一个列表"""
return [func(item) for item in my_list]
result = func(lambda item: item + 1, [1, 2, 3, 4, 5])
print result
# 输出结果:[2, 3, 4, 5, 6]
使用if/else:
(lambda x, y: x if x < y else y)(1, 2)
# 输出结果:1
f = lambda x, y: x if x < y else y
f(1, 2)
# 输出结果:1
递归
f = lambda func, n: 1 if n == 0 else n * func(func, n - 1)
f(f, 3)
# 输出结果:6
五、总结:
匿名函数本质上是一个函数,没有函数名称,因此使用匿名函数不用担心函数名冲突
匿名函数一般适用于创建一些函数逻辑简单