http://www.cnblogs.com/vamei/archive/2012/07/10/2582772.html
1. lambda
在展开之前,我们先提一下lambda。lambda是一种简便的,在同一行中定义函数的方法,其功能可以完全由def定义实现。lambda例子如下:
func = lambda x,y: x + y print func(3,4)
lambda以及之后的内容实际上生成一个函数对象(也就是函数)。该函数参数为x,y,返回值为x+y。该函数对象赋值给函数名func。func的调用与正常函数无异。
以上定义完全可以写成以下形式:
def func(x, y): return x + y
2. 函数可以作为参数传递
函数可以作为一个对象进行参数传递。函数名(比如func)即指向该对象,不需要括号。比如说:
def test(f, a, b): print 'test' print f(a, b) test(func, 3, 5)
我们可以看到,test函数的第一个参数f就是一个函数对象。我们将func传递给f,那么test中的f()所做的实际上就是func()所实现的功能。
这样,我们就大大提高了程序的灵活性。假设我们有另一个函数取代func,就可以使用相同的test函数了。如下:
test((lambda x,y: x**2 + y), 6, 9)