匿名函数Lambda表达式

匿名函数

  • 匿名:
    隐藏名字,即没有名称
  • 匿名函数:
    没有名字的函数

Lambda 表达式

  • python中使用Lambda表达式构建匿名函数
lambda x : x ** 2# 定义
(lambda x : x**2)(4)#调用  #注意括号
  • 使用lambda关键字定义函数,格式为lambda[参数列表]:表达式
  • 参数列表不需要小括号.无参就不写参数
  • 冒号用来分割参数列表和表达式部分
  • 不需要使用return,表达式的值,就是匿名函数的返回值,表达式中不能出现等号
  • lambda表达式(匿名函数)只能写在一行上,也成单行函数

匿名函数往往用在高阶函数传参时,使用lamabda表达式,往往能简化代码

#返回常量的函数
print((lambda :0)())   


#  加法匿名函数  带缺省值
print((lambda x,y=3 : x + y)(5))


print((lambda x=3,y=4 : x + y)(5,6))
###

[i for i in (lambda *args: map(lambda x : (x+1, args), args))(*range(5))]
##               
  1. *args是外层lambda的形参,其传的实参是(*range(5))
  2. 外层lambda的函数体返回值就是 map函数的返回值.
  3. 把可变位置参数*args收集的(0,1,2,3,4)带入到map函数中
  4. map函数的执行函数体内层lambda,传的参数是0,1,2,3,4
  5. 内层lambda函数中把args,01234依次传实参给x 执行函数体(x+1,args)
  6. 依次为(0+1,(0,1,2,3,4)),(1+1,(0,1,2,3,4))…返回5个元素
  7. 外层列表解析式,生成含有这5项的列表
  • 生成的列表 [(1, (0, 1, 2, 3, 4)), (2, (0, 1, 2, 3, 4)), (3, (0, 1, 2, 3, 4)), (4, (0, 1, 2, 3, 4)), (5, (0, 1, 2, 3, 4))]

  • map 把args里的每一项都拿出来在执行函数里的操作

猜你喜欢

转载自blog.csdn.net/haihaihai2232/article/details/89375782