035-函数式编程

lambda

lambda,也就是希腊字母中的λ,在python中表示匿名函数的意思。

一般我们定义一个函数,通常以以下的方式进行:

>>> def fun(x):
    return x * 2

>>> fun(5)
10

在这个函数中,我们给他取了个名字,叫做fun,那么假如有的时候,我们不需要给函数取名字,是不是可以让整个定义函数的过程更简单呢?

这就是lambda的作用。上面的函数定义过程可以简化为:

>>> lambda x : x * 2
 at 0x00000187507614C0>

返回的是一个函数位置,这就说明已经存在一个匿名函数了。既然匿名函数已经存在,给函数命名就变得简单了,其实就是个赋值嘛。

>>> g = lambda x : x *2
>>> g(4)
8

当然了,前面提到的闭包,也可以用lambda来表示:

>>> def fun(x):
    return lambda y : x + y

>>> fun(8)(4)
12

那么外层函数是不是也可以简化成lambda的形式呢?当然可以:

>>> g = lambda x : lambda y : x + y
>>> g(8)(4)
12

filter

过滤器的意思就是可以从一堆东西里按照一定的规则,挑选出自己需要的东西。所以,过滤器的使用方法就是:

过滤器(函数,原材料)
因为原材料是有很多东西构成的,因此原材料一般是一个iterable(可迭代对象)

filter(function or None, iterable),如果函数的位置选择


你可能感兴趣的:(035-函数式编程)