python匿名函数详解

python中,使用lambda关键字来创建匿名函数。

语法

lambda [arg1 [,arg2,.....argn]]:expression

匿名函数的优点

  1. 程序一次行使用,所以不需要定义函数名,节省内存中变量定义空间
    2.让程序更加简洁。

匿名函数的几个规则

  1. 一般也就一行表达式,必须有返回值
  2. 不能有return
  3. 可以没有参数,可以有一个或多个参数

无参匿名函数:

>>> t = lambda : True  #分号前无任何参数
>>> t()
True

#等价于下面的def定义的函数
>>> def func(): return True
>>> func()
True

带参匿名函数:

>>> lambda x: x**3           #一个参数
>>> lambda x,y,z:x+y+z       #多个参数
>>> lambda x,y=3: x*y        #允许参数存在默认值

匿名函数的调用:

#直接赋值给一个变量,然后再像一般函数调用
>>> c = lambda x,y,z: x*y*z
>>> c(2,3,4)
24

>>> c = lambda x,y=2: x+y    #使用了默认值
>>> c(10)                    #不输的话,使用默认值2
12

>>> a = lambda *z:z          #*z返回的是一个元祖
>>> a('Testing1','Testing2')
('Testing1', 'Testing2')

>>> c = lambda **Arg: Arg    #arg返回的是一个字典
>>> c()
{}

#直接后面传递实参
>>> (lambda x,y: x if x> y else y)(101,102)
102 
>>> (lambda x:x**2)(3)
9

嵌套使用

#lambda嵌套到普通函数中,lambda函数本身做为return的值
>>> def test(n):
...     return lambda x: x+n
...
>>> f=test(4)
>>> f(2)
6

1、lambda只是一个表达式,函数体比def简单很多。
2、lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
3、lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

其中,第三条意味着当你运行

>>>x, y = 4, 5
>>>(lambda x,y:x+y)(7, 8)

结果是
15

你可能感兴趣的:(python匿名函数详解)