匿名函数(lambda)
.
- 描述
在python中,我们不仅可以定义普通函数(使用def关键字定义的函数),同时还可以定义匿名函数
- 语法
lambda 参数列表:表达式
# lambda x : x * x 实际上就是
def f(x):
return x * x
a.关键字lambda
表示匿名函数,冒号前面的x
表示函数参数(可以没有或者是多个)
b.冒号后边是表达式,在匿名函数中有且只能有一个
c.匿名函数不用写retrun
,表达式本身结果就是返回值
- 匿名函数的优点
a.匿名函数没有名字,不必担心函数名冲突
b.匿名函数是一个函数对象,可以把匿名函数赋值给一个变量,再利用变量调用该函数
f = lambda x : x * x
print(f)
# 输出结果:<function <lambda> at 0x000001B8E5202E18>
print(f(2))
# 输出结果:4
c.可以把匿名函数作为返回值返回
def f(x,y):
return lambda : x * x + y * y
a = f(2,3)
print(a())
# 输出结果:13
等同于
def f(x,y):
def s():
return x * x + y * y
return s
a = f(2,3)
print(a())
# 输出结果:13
- 实例
a.无参匿名函数
t = lambda : True
print(t())
# 输出结果:True
b.带参数匿名函数
a = lambda x : x**3 # 一个参数
b = lambda x,y,z : x + y + z # 多个参数
c = lambda x,y=3 : x * y # 允许参数存在默认值
c.直接后面传递实参
a = (lambda x,y : x if x > y else y)(101,102)
print(a)
# 输出结果:102
b = (lambda x :x ** 2)(3)
print(b)
# 输出结果:9
d.lambda返回的值,结合map,filter,reduce使用
a = filter(lambda x : x % 3 == 0,[1,2,3,4,5,6])
print(list(a))
# 输出结果:[3,6]