lambda 表达式

 2018-06-08    大连    晴 /python/2018/06/08/lambda.html python python

本文最近更新于 2018 年 06 月 12 日

Python 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。
Python 编程简明教程 https://jsntn.com/python

在 Python 中,我们可以使用 lambda 表达式来创建匿名函数1。举例,我们要计算两个数的和,函数这样定义:

>>> def add(x, y):
    return x + y

>>> add(1, 2)
3

而如果用 lambda 表达式的话,我们就可以直接使用:

>>> f = lambda x, y: x + y
>>> f(2, 3)
5
>>> 

其中,f 定义了 lambda 表达式(即将 lambda 函数赋值给了变量 f,用变量名来表示要使用的 lambda 表达式),x, y 是参数,: 后面的 x + y 是执行的操作。其实我们也可以不将 lambda 表达式赋值给变量,而直接执行2

>>> (lambda x, y: x + y)(3, 4)
7
>>> 

所以,我们会发现 lambda 省略了函数名,写法更简单,其实性能也更好,因为在调用时会绕过函数的栈分配。除此之外,lambda 存在的意义是什么呢?

其实简单来说,lambda 表达式通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用。

lambda 的语法是:

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

一些注意事项:


一个练习:打印 100 以内的为 3 的倍数的数

方法一:

def func():  
    result = []  
    for i in xrange(100):  
        if i % 3 == 0:  
            result.append(i)  
    return result

方法二:

def func(x):  
    return x%3 == 0  
  
filter(func,[i for i in xrange(100)]) 

方法三:

filter(lambda x:x%3==0,[i for i in xrange(100)]) 

扩展阅读:


  1. 所谓匿名函数,即不需要定义函数,像表达式一样使用,不需要函数名。 [return]
  2. Using lambda Functions [return]
  3. Lambdas [return]
  4. Variables, expressions and statements [return]
关于作者
麦子,80 后,现从事通信行业。安卓玩家一个人的书房朗读者。
 英语入门到放弃
 jsntn
 jasonwtien
 jasonwtien
更多…… /about.html

最近更新: