写在前面的话:
在pandas 入门学习中,第一次接触到匿名函数lambda,虽然能猜懂其中lambda的作用,但仍觉得不够系统,尤其是与def的对比。这篇文章就是简单总结一下自己对lambda的理解。
匿名函数:lambda
在Python中有两种声明函数的方法:def和lambda。与def一样,lambda创建了一个之后能够调用的函数,它返回该函数本身而不是将其赋值给一个变量名,这便是lambda称为匿名函数的原因。
lambda表达式
lambda函数的一般形式是:关键字lambda后面跟上一个或者多个参数,之后是一个冒号,最后是一个表达式。
lambda argument1, argument2, ..., argumentN : expression using arguments
-
lambda是一个表达式,而不是语句。
因为这一点,lambda能够出现在Python语法不允许def出现的地方。譬如:列表、字典或者函数调用的参数中等。作为一个表达式,lambda返回一个值(一个新函数),而且可以选择性地被赋值给一个变量名。相反,def语句总是需要在头部将一个函数赋值给一个名称,而不是将函数作为结果返回。 -
lambda的主体是一个单独的表达式,而不是一个代码块。
因为lambda是一个表达式,所以lambda通常要比def功能:只能在lambda的主体中封装有限的逻辑,连if语句都不能使用。lambda是为了编写简单的函数而设计的,合理的使用lambda函数可以使得代码更pythonic。
def语句
def name (arg1, arg2, ..., argN):
statements
例子
def func(x,y,z):
return x+y+z
func(2,3,4)
9
#这里f被赋值给lambda创建的函数对象
f = lambda x,y,z: x+y+z
f(2,3,4)
9
为什么使用lambda
lambda起到一种函数速写的作用,可以在使用它的代码中内嵌一个函数的定义,会带来更加简洁的代码结构。当然lambda是完全可选的,总可以使用def来代替lambda。
L = [lambda x: x**2,
lambda x: x**3,
lambda x: x**4]
for f in L:
print(f(2))
4
8
16
#
def f1(x):return x**2
def f2(x):return x**3
def f3(x):return x**4
L = [f1, f2, f3]
for f in L:
print(f(2))
4
8
16
结语:
有关lambda的简单总结到此就结束了,如何合理使用lambda使得代码更加简洁,只能留给后面的探索了。
参考书籍:
《Python学习手册》
2019-06-15
网友评论