Python基础——第九章 第一部分 匿名函数及自定义函数,区别

在前一章学习了函数定义,如果求a的3次方这样的函数,我们可以这样做

def func(a):
    return a**3
re1=func(2)
print(re1)   '''运行结果:8'''

那么,还有别的方法吗?

进入今天的主题——匿名函数

1、匿名函数

想实现函数的功能,不想给函数命名

lambda 参数:表达式

# lambda 参数:表达式
re2 = lambda b:b**3
print(re2)          #运行结果:<function <lambda> at 0x0000000002567E50>   若不调用的话,打印的结果是函数体
print(re2(2))       #运行结果:8      需要调用才可以输出结果

前面还提到filter函数,可以过滤序列满足条件的元素,但是使用前需要先定义一个函数,那么有没有更简单的方法呢?

#filter(函数,序列)


#利用定义函数的方法
def func(x):
    return x>10
li=[1,111,23,54,4,8,1,1,745,2,4,22,65,2]  #列表

print(list(filter(func,li)))  '''执行结果:[111, 23, 54, 745, 22, 65]'''



#利用匿名函数的方法

print(list(filter(lambda a:a>5,[1,2,4,5,7,88,9,6])))

从以上对比,定义函数的方法需要用4行语句,而用匿名函数的方法仅1行语句,这样可以大大提升程序的效率!

注意:

  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

2、匿名函数参数

func = lambda x,y,z:x+y+z
print(func(2,5,9))       '''结果:16'''



#默认参数
func= lambda x='I',y=' Want',z=' You':x+y+z
print(func())              '''结果:I Want You'''
print(func(y=' Love'))     '''结果:I Love You'''

 

3、lambda和普通的函数的区别:

1、匿名函数省去了定义过程,使得程序更简洁优化

2、匿名函数省去了对函数命名的过程,也避免了函数名冲突的问题

3、匿名函数不需要return来返回值,表达式本身就是返回值

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值