lambda匿名函数

在一些情况下,我们想在程序里添加一些简单的小处理时,除了写一下控制语句充当开关,我们还能怎么做呢?我们都知道,Python都会有一些包或者模块,方便我们使用,这里,我们也有一个lambda函数~
而lambda函数是什么呢?又有哪些功能…
➢首先,我们来看一下这个例子:
通过序列[‘abc’, ‘xfe’, ‘zcb’]中元素的第三个字符对序列元素进行排序。
有如下程序:

>>> sorted(['abc', 'xfe', 'zcb'], key=lambda x:x[2])
['zcb', 'abc', 'xfe']

这样是不是很方便呢?现在,就让我们来了解一下lambda吧!

lambda匿名函数

  • lambda函数是一种匿名函数,即没有名字的函数,但也可以用lambda表达式定义有名字的函数。
  • 使用 lambda 保留字定义,函数名是返回结果。
  • lambda表达式中可以使用任意复杂的表达式,但是必须只编写一个表达式,且表达式只能是单行的。
  • lambda表达式不允许包含复合语句,但在表达式中可以调用其他函数。
  • lambda函数适合需要一个函数作为另一个函数参数的场合,主要用作一些特定函数或方法的参数。
  • 一般情况下,建议使用 def 定义的普通函数。
    lambda匿名函数
    可理解为:lambda (parameters) : (return value)

下面,我们来看一些lambda的函数示例:

  • lambda x, y : x+y;函数输入任意两个可进行加法运算的参数x和y,输出是它们的和(也可以进行其他的运算)。

    >>> add = (lambda x, y : x+y)
      >>> add(3,9)
      12
      >>> add(["hello","hi"],["friend"])
      ['hello', 'hi', 'friend']
    
  • lambda : None;函数没有输入参数,输出是None

  • lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)

>>> sum_1 = (lambda *b : sum(b))
>>> sum_1(2,9,7)
18
  • lambda **kwargs: 5; **后的那些参数被当作字典类型传递到函数,这里输出是1