用来练手的python练习题,原题链接python练习实例49
该练习题主要是关于lambda函数的使用方法,本文就python中的lambda函数做出一点总结。
1. lambda函数的定义与调用
在python中,我们都知道使用def关键词来定义一个函数, 例如一个最简单的,返回值是他的参数的函数identity,如下所示:
def identity(x):return x
使用lambda可以只用一行就实现identity函数的定义:
ident = lambda x : x
调用如下:
print(ident(2))
输出结果如下:
lambda函数的定义非常简单,以上述函数为例,ident是函数的名字,lambda关键字后跟该lambda函数的参数,冒号后是该函数的返回值。调用lambda函数和调用普通函数一样,函数名 + 括号内参数。
此外,lambda函数也有自己的独有性质,即lambda函数可以使用立即调用的函数表达形式(IIFE)。我们可以在定义lambda函数的同时进行调用,此时lambda函数也不再需要一个用于调用的函数名了:
print((lambda x : x+1)(2))
输出结果如下:
2. lambda函数在高阶函数中的应用
lambda函数因为其简单的定义方式,在很多高阶函数的定义中会被使用。tips: 高阶函数即,函数存在至少一个参数是函数且该函数的返回值是一个函数。
举例如下:
high_ord_func = lambda x, func: x + func(x)print(high_ord_func(2, lambda x: x * x))
输出结果如下:
这个高阶函数还可以写成:
def high_ord_func(x,func):return x + func(x)a = high_ord_func(2,lambda x: x+2)
print(a)
输出结果同样也是6。
高阶函数可以类比C++中的模板函数。当我们定义函数high_ord_func=lambdax,func:x+func(x)high\_ord\_func = lambda x, func: x + func(x)high_ord_func=lambdax,func:x+func(x) 时,可以理解为我们定义了一类函数模板,这类模板函数都有两个参数,变量x以及一个函数func(x),返回值为x+func(x)。当我们要使用函数时,需要将这些函数模板实例化,同样是给未初始化的参数赋值。
3. lambda函数使用的语法注意点
lambda函数作为一种单行的python函数定义方式,相比传统的def定义函数,更加简洁优雅,但同时lambda函数也有自身的局限性。
首先当我们使用def定义普通函数时,可以对参数类型进行注释。但是当使用lambda定义时,就不再能使用类型注释了。
def plusplus(a: int, b: int)->int:return a+b
而且使用lambda定义函数时,不能加入例如return, assert, pass, raise等声明,否则会导致syntax error。
\newline
\newline
\newline
\newline
参考文章: How to Use Python Lambda Functions