开发者学堂课程【Python入门 2020年版:匿名函数的使用介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10340
匿名函数的使用介绍
内容介绍
一、匿名函数
二、调用方法
一、匿名函数
用 lambda 关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
1.f add(a, b):
return a + b
x = add(4, 5)
#函数名(实参)作用是调用函数,获取到函数的执行结果,并赋值给变量 x
print(x)
运行结果:9
2.fn = add
这个代码大家能看懂嘛?
print(fn)
如果打印 fn 是什么东西,函数本质上就是一块准备好的代码,
print("Ox%X" % id(add))
运行结果:0x1CE36C81D38 9
函数本质上就是一块准备好的代码,这个代码都位于内存里面,在内存里面有一个块,0x1CE36C81D38就是他的房间号,在这个房间里存储这代码,现有一个 add 变量指向该代码,之前都是认为指向一个字符串,一个元组和列表等。
但是没有指向过函数,其实也是同样的,函数就是准备好的一段代码,一块代码。Fn=add 就是一个赋值,他也指向这同一堆代码,这相当于起了一个别名。
print("Ox%X" % id(fn))
运行结果:0x1CE36C81D38 地址相同,
F(n)=add,也可以写成 fn(3,7)相当于给函数写了一个别名,fn(3,7)也是可以的,相当于给 fn 起了一个别名。
#除了使用 def 关键字定义-一个函数以外,我们还能使用 lambda 表达式定义一个函数是比较简单的,只定义一个语句。
匿名函数 lambda a,b:a+b 这个函数跟 def add(a,b)意义是相同的,同样需要两个参数,a 和 b,计算的结果是 a+b,然后返回回来。
匿名函数更多时候,用来表达一个简单的函数,函数调用的次数很少,基本上就是调用一次。
二、调用方法:
1.给它定义一个名字(很少这样使用)
Mul =lambda a,b:*b
Print
(mul(4,5))
Mul 就是一个函数
运行结果:20 跟上面 add 相同,起一个别名,fn 是 add 的别名,mol 也是一个别名,起了别名就可以调用它了.
2.把这个函数当作参数传给另一个函数使用(使用场景较多)
自定义一个匿名函数的场景
Def cala(a,b):
Pass
有两个参数 a,b 能够做运算,可以加减乘除,如何计算,return a+b 就写死了,只能做加法,假如想做其他运算就不可以。
Print(calc(1,2)),只需要告诉做什么运算就可以计算,
调用时:
Def calc(a,b)
Def add(x,y)
Return x+y
X1=calc(1,2)
将1调用给 a,2调用给 b,再调用给 xy ,之后结果返回到 a 和 b,z 再返回,这个时候 x 就是1+2的结果了
Def calc(a,b)
C=add(a,b)
Return c
Def add(x,y)
Return x+y
X1=calc(1,2)
X2=cal(10,5)
Def minus(x,y)
Retutn x-y
不能调 add,要调用,minus,要求运算不能写死,加法减法分开,要求1跟2是加法,10跟5是减法应该如何做,c = minus(a, b)这个运算不能写死,在函数里面不能写死的地方要写什么,固定的地方不用变,不固定的地方加参数。随便加一个参数 fn。
def calc(a, b
, fn) :
c = minus(a
, b)
return c
def add(x, y):
return x +y
def minus(x
, y):
return x – y
x1 = calc(1
,2,add) #a=1,b=2,fn=add
print(x1)
x2 = calc(10
,5,minus) #a=10,b=5,fn=minus
print(x2)
这个地方是有点难的,是高阶函数,加的参数 add 是函数类型的不能加括号。
C=fn,fn=add 这个函数,要调用这个函数,将1和·2传过来,达到这个函数=3,最后再返回,如上图所示。
一进来就调用 fn=minus,
不能写(add),写的是函数,这个很高级,在开发中经常使用,叫做回调函数,给你一个函数,在合适的时间回调给我,将一个函数作为另一个函数的参数,add 和 minus 都非常简单,在写时就不需要这么写。
x3 = calc(5
,7,lambda x, y: x + y)
x,y 是形参,形参任意
x4 = calc(19, 3, 1ambda x, y: x- y)
x5=calc(2,7,lambdax,y:x*y)
x6 = calc(12
, 3,lambda x,y:x / y)
print(x3,x4,x5,x6)
运行结果:12,16,14,4.0
Lambda 作为函数就是将一个 lamda 作为另一个函数的参数。