Python学习笔记——CSDN学习记录二十五:匿名函数

匿名函数

        lambda 表达式必须使用 lambda 关键字定义;lambda关键字后面与冒号前面是参数列表,多个参数用逗号分隔,冒号右边是 lambda 表达式的返回值。

        lambda 表达式一般用于无需多次使用的函数,并且该函数使用完毕就释放了所占用的空间。

一、语法格式:

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

二、lambda 表达式与 def 定义函数的区别:

        1. lambda 表达式没有函数名,def 定义函数有函数名;

        2. lambda 表达式的冒号后面只能有一个表达式,否则会出现错误;

        3. for 语句不能用在 lambda 表达式中,即 lambda 表达式不能包含复杂语句;

        4. lambda 表达式不能共享给别的程序调用;

        5. lambda 表达式可以作为其它数据类型的值。

my_list = [lambda a: a**2, lambda b: b**2]

fun = my_list[0]

print(fun(2))


# 输出结果:
#   
#       4

三、lambda 表达式应用场景:

        1. 将 lambda 表达式赋值给一个变量,然后调用这个变量:

fun = lambda a: a**2

print(fun(2))


# 输出结果:
#   
#       4

        2. 将 lambda 表达式赋值给其他函数,从而替换其他函数功能:一般这种情况是为了屏蔽某些功能,例如,可以屏蔽内置 sorted() 函数:

sorted = lambda *args:None
x = sorted([3,2,1])

print(x)


# 输出结果:
#   
#       None

        3. 将 lambda 表达式作为参数传递给其他函数:

my_list = [(1, 2), (3, 1), (4, 0), (11, 4)]
my_list.sort(key=lambda x: x[1])

print(my_list)


# 输出结果:
#   
#       [(4, 0), (3, 1), (1, 2), (11, 4)]

                · 该式子表示依据列表中每个元素的第二项进行排序。

        4. 将 lambda 表达式应用在 filter、map、reduce 等高阶函数中。

        5. 将 lambda 表达式应用在函数的返回值里面。

def fun(n):

    return lambda x:x+n


new_fun = fun(2)

print(new_fun)



# 输出结果:
#   
#       <function fun.<locals>.<lambda> at 0x000001B7C370DD38>

                · 函数的返回值也是一个函数。

                · 上述代码中,lambda 表达式实际是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数。

                · 将包含嵌套函数的函数称之为外部函数。

                · 内部函数能够访问外部函数的局部变量,此特性为闭包编程基础。

· Python 中所有的函数都可以当做参数传递。

· 当有一个满足要求的函数时,没必要额外使用 lambda 表达式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaJucy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值