Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2790975
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Python/Ruby

2013-03-04 10:59:55

编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

>>> def f(x): 1 ... 

return x*2 ... 

>>> f(3) 

6 

>>> g = lambda x: x*2 2

>>> g(3)

6 

>>> (lambda x: x*2)(3) 3

6


1、这是一个 lambda 函数,它完成同上面普通函数相同的事情。注意这里的简短的语法;没有小括号, return 是默认的,并且函数没有名字,只有将它赋值给变量的变量名。

2、你甚至可以不将 lambda 函数赋值给一个变量而使用它。这不是举世无双的东西,它只是展示了 lambda 函数只是一个内联函数。

3、lambda 函数是风格问题。不一定非要使用它们,任何能够使用它们的地方,都可以定义一个分离的普通的函数,用它来替换。我将它们用在需要封装特殊的,非重用的代码上,用许多小的一行函数不会弄乱我的代码。

4、总之, lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 lambda 函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向 lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。


顺便这里有几件事情需要注意。首先,我们使用了 and-or 技巧的简单形式,没问题,因为一个 lambda 函数在一个布尔环境下总为真。(这并不意味着 lambda 函数不能返回假值。函数本身总是为真,它的返回值可以为任何值。)


阅读(5774) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~