守望的麦子

lambda 表达式

2018-6-8    大连    /python/2018/06/08/lambda.html python python,

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

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

Python 编程简明教程 https://wheat.at/python/

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

1 >>> def add(x, y):
2 	return x + y
3 
4 >>> add(1, 2)
5 3

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

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

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

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

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

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

lambda 的语法是:

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

一些注意事项:


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

方法一:

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

方法二:

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

方法三:

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

扩展阅读:

  1. 所谓匿名函数,即不需要定义函数,像表达式一样使用,不需要函数名。 

  2. Using lambda Functions 

  3. Lambdas 

  4. Variables, expressions and statements 

关于作者
麦子,80 后,现从事通信行业。安卓玩家一个人的书房朗读者。
MRJENGLISH
jsntn
jasonwtien
jasonwtien
更多…… /about.html

最近更新: