匿名函数的关键字是(python普通函数的参数形式,居然在匿名函数lambda中也支持)

定义
  • 使用关键字lambda的表达式 ,
  • 所谓的匿名 ,也就是没有函数名字,也就不需要def去定义函数 。
  • 匿名函数的参数规则 、返回值都和普通函数是一样的 。
格式

lambda [arg1 [,arg2, ... argN]] : expression

通过以上我们可以将上面的匿名函数总结为 :lambda + 参数列表 + 执行表达式

比如: >>> lambda a,b : a * 10 + b

其中冒号之前的a,b就是参数 ,可以是一个也是可以多个, 也就是上面的参数列表 ;而a * 10 +b 就是这个函数的表达式 ,而这个表达式最终也会作为返回值返回 ,注意:这里不需要return .

匿名函数

>>> x = lambda a, b: a * 10 + b >>> x(2,3) 23 # 这个匿名函数就相当于: def x(a,b):    return a * 10 + b比较

如果你还是不太理解上面的意思,我们通过一张图来解释它们的关系 。


我们知道,在普通函数的参数有多种表示形式,如位置参数,默认参数,关键字参数以及可变参数 ,那么在lambda是否也支持这样的表示形式呢 ?

实例

在本例中我们就来探究普通函数中的位置参数,默认参数,关键字参数以及可变参数 是否也在lambda中适用。

1.位置参数

# 1. 位置参数 def add1(a,b):    return a + b x = lambda a,b : a + b print("add1函数返回:{}".format(add1(3,5))) print("匿名函数返回:{}".format(x(3,5))) print("*" * 30) #输出结果: add1函数返回:8 匿名函数返回:8 ****************************** #说明 :最基本的位置参数肯定是支持的 。

2.默认参数

# 2.默认参数 def add2(a,b=10):    return a + b y = lambda a,b=10 : a+b print("add2函数默认值赋值返回:{}".format(add2(1,5))) print("匿名函数默认值赋值返回:{}".format(y(1,5))) print("*" * 30) print("add2函数走默认值返回:{}".format(add2(1))) print("匿名函数走默认值返回:{}".format(y(1))) #输出结果: dd2函数默认值赋值返回:6 匿名函数默认值赋值返回:6 ****************************** add2函数走默认值返回:11 匿名函数走默认值返回:11 #说明:通过上面的示例可以看到,匿名函数也是支持参数设置默认值的。

3.关键字参数

# 3. 关键字参数 def add3(a,b):    return a + b z = lambda a,b : a+b print("*" * 30) print("add3为关键字函数返回:{}".format(add3(b='3.6.8',a='python'))) print("匿名函数设置关键字函数返回:{}".format(z(b='3.6.8',a='python'))) #输出结果: add3为关键字函数返回:python3.6.8 匿名函数设置关键字函数返回:python3.6.8 ****************************** #说明:匿名参数也可以按照关键字参数方式进行传递

4.可变参数

# 4.可变化函数 def add4(a,*args):    return a + sum(args) zz = lambda a,*args : a + sum(args) print("*" * 30) print("add4为可变函数返回:{}".format(add4(1,2,3,4))) print("匿名函数设置可变函数返回:{}".format(zz(1,2,3,4))) #输出结果: add4为可变函数返回:10 匿名函数设置可变函数返回:10 ****************************** #说明:匿名函数同样也支持可变化参数的传递总结

  • lambda是单个表达式,不是一个代码块,所以它只能满足简单函数的使用场景,仅能处理一些简单逻辑,若需要处理复杂逻辑,还的使用普通函数 。
  • 当然如果你函数逻辑本身就简单,使用它会简化代码,同时也不用为了函数重名问题烦恼



您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友