我们知道,Python中通过def关键字来定义一个函数,函数的定义形式如下:
def fcn(param): pass
fcn代表函数名称,param表示函数的参数。
这样定义函数的方式被称为显示定义函数,可以直接使用函数名进行调用。
fcn(input_param)
除上述显示定义函数外,Python也像其它高级语言一样对匿名函数提供了支持。
匿名函数,顾名思义就是不需要显示的指定函数名称,使用lambda关键字来创建一个匿名函数,语法形式如下:
power = lambda n : n**n | | | | ① ② ③ ④
① power:代表函数名,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量
② lambda:关键字,类似于def,代表这是一个匿名函数
③ 代表匿名函数的参数
④ 代表匿名函数返回值
匿名函数特点:
匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是表达式的结果。
有些函数在代码中只用一次,而且函数体比较简单,使用匿名函数可以减少代码量,看起来比较"优雅“。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数,如:
>>> power = lambda n : n**n >>> power <function <lambda> at 0x0000000005015AF8> >>> power(6) 46656
匿名函数也可以作为函数返回值返回,如:
def build(x, y): return lambda: x * x + y * y
匿名函数使用:
匿名函数主要和其他函数联合使用,比如map函数一起使用
map函数
map函数接收两个参数,一个是函数,一个是可迭代对象Iterable,map函数将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
示例如下:
>>> L = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> lam = map(lambda x: x * x, L) >>> lam <map object at 0x00000000049AF148> >>> list(lam) [1, 4, 9, 16, 25, 36, 49, 64, 81]