G******n 发帖数: 749 | 1 我看不出跟两个参数的 函数有什么区别
请高手指点 | f*******n 发帖数: 12623 | 2 lambda是匿名函数,跟函数一样,但是不需要分开定义和用。还有,python的lambda里
面只可以是一个expression;如果要做更复杂的东西,那就用一般的函数好了。 | G******n 发帖数: 749 | 3 效果好在什么地方呢?是不是类似于inline?
多谢
【在 f*******n 的大作中提到】 : lambda是匿名函数,跟函数一样,但是不需要分开定义和用。还有,python的lambda里 : 面只可以是一个expression;如果要做更复杂的东西,那就用一般的函数好了。
| f*******n 发帖数: 12623 | 4 效果就是写起来简单。
map(lambda x: x * x, [1,2,3,4])
和
def square(x):
return x * x
map(square, [1,2,3,4])
一样。但是就短很多。
【在 G******n 的大作中提到】 : 效果好在什么地方呢?是不是类似于inline? : 多谢
| p**o 发帖数: 3409 | 5 跟一个普通函数差不多,只不过懒得起名,干脆叫lambda而已
没什么实质性好处
>>> def foo(x):
... return x + 1
...
>>> (lambda x: x + 1)(0)
1
>>> type(lambda x: x + 1)
>>> f = lambda x: x + 1
>>> g = foo
>>> f(1) == g(1)
True
>>> f.__name__
''
>>> g.__name__
'foo'
【在 G******n 的大作中提到】 : 效果好在什么地方呢?是不是类似于inline? : 多谢
| p**o 发帖数: 3409 | 6 [x**2 for x in [1, 2, 3, 4]]
lamba/map/reduce were syntaxes Guido regretted adding to Python.
http://www.artima.com/weblogs/viewpost.jsp?thread=98196
【在 f*******n 的大作中提到】 : 效果就是写起来简单。 : map(lambda x: x * x, [1,2,3,4]) : 和 : def square(x): : return x * x : map(square, [1,2,3,4]) : 一样。但是就短很多。
| x****u 发帖数: 44466 | 7 python的不知道,C++里面的lambda是好东西,可以减少很多不必要的内部函数,而
且还可以capture变量。VC11的多线程就是在这个基础上玩出来的。
【在 p**o 的大作中提到】 : 跟一个普通函数差不多,只不过懒得起名,干脆叫lambda而已 : 没什么实质性好处 : >>> def foo(x): : ... return x + 1 : ... : >>> (lambda x: x + 1)(0) : 1 : >>> type(lambda x: x + 1) : : >>> f = lambda x: x + 1
|
|