好好说说什么是Python匿名函数

匿名函数在Python中使用lambda关键字定义,无需def和返回语句。它们通常用于简单操作,如单行表达式。文章通过示例展示了无参数、传参、带默认值的匿名函数用法,并与普通函数进行对比,说明了两者在声明、语句数量和功能复杂度上的区别。

匿名函数

  • 匿名即可以理解不想让别人知道你写的函数名是什么
  • 定义匿名函数不再需要 def 来定义,使用 lambda 关键字来定义
  • 匿名函数,不需带return,结果就是它的返回值
  • lambda 的主体是一个表达式,而不是代码段(只能实现一些简单功能)
  • 语法: lambda [arg1[,arg2,…argn]]:expression
    • []表过可以有参数,且可以有多个参数
    • 也可以不带参数
匿名函数的示例
  • 无参数
import random

# 返回一个0, 1之间随机数
num = lambda : random.random()
print(num())
  • 传入1个值,对这个值进行指定的操作后返回
# 定义匿名函数,且赋值给sum变量 num为参数,num+9为表达式
sum = lambda num: num+9
# 调用lambda函数,sum()可以理解为函数,传入参数1给num,
print(sum(1))
  • 传多个参
# 定义*args不定传数, sum(args)进行和相加
res = lambda *args: sum(args)
# 调用并传入
print(res(10, 20, 30))

# 对比普通函数写法
def add(*args):
    return sum(args)
print(add(10, 20, 30))
  • 表达式使用内置方法,如sum(),max(),min()等等
# 定义列表
list = [10, 20, 30]
# sum()求和
num = lambda x:sum(list)
# 调用函数,传入list
print(num(list))
  • 参数带有默认值
sum= lambda a, b=30: a + b
print('带有默认值:', sum(10))
print('修改默认值:', sum(10, b=1))
  • 可以在匿名函数后直接加上值,这就可以在指定场景中使用
# (3, 4)直接分别依次传给x和y
# 注意要分别加上括号
sum = (lambda x, y: x + y)(3, 4)
print('在函数后添加值:3 + 4 =', sum)
  • 使用if条件判断
# if条件判断  如果x大于y就打印字符串:大于,否则打印字符串:小于
num = lambda x, y: ("大于" if x> y else "小于")
print('8和6对比:', num(8, 6))
print('0和6对比:', num(0, 6))
# 打印结果
86对比: 大于
06对比: 小于
匿名函数和普通函数传参的区别

匿名函数与普通函数区别

既然匿名函数那么简洁方便,那是不是匿名函数能直接代替普通函数呢?答案是否定的,可以比较下他们之间的区别:

  • 普通函数使用def声明函数,且需要定义函数名;匿名函数则无需定义函数名,使用lambda关键字即可
  • 普通函数可以有多条语句;匿名函数只能有一个表达式
  • 普通函数可以用于实现复杂的功能逻辑处理;而匿名函数一般用于实现一些简单的功能
  • 函数被多次调用则使用普通函数;单次调用使用匿名函数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码上开始

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

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

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

打赏作者

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

抵扣说明:

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

余额充值