匿名函数lambda

写在前面的话:

在pandas 入门学习中,第一次接触到匿名函数lambda,虽然能猜懂其中lambda的作用,但仍觉得不够系统,尤其是与def的对比。这篇文章就是简单总结一下自己对lambda的理解。

匿名函数:lambda

在Python中有两种声明函数的方法:deflambda。与def一样,lambda创建了一个之后能够调用的函数,它返回该函数本身而不是将其赋值给一个变量名,这便是lambda称为匿名函数的原因。

lambda表达式

lambda函数的一般形式是:关键字lambda后面跟上一个或者多个参数,之后是一个冒号,最后是一个表达式。

lambda argument1, argument2, ..., argumentN : expression using arguments 
  1. lambda是一个表达式,而不是语句
    因为这一点,lambda能够出现在Python语法不允许def出现的地方。譬如:列表、字典或者函数调用的参数中等。作为一个表达式,lambda返回一个值(一个新函数),而且可以选择性地被赋值给一个变量名。相反,def语句总是需要在头部将一个函数赋值给一个名称,而不是将函数作为结果返回。
  2. 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

你可能感兴趣的:(匿名函数lambda)