python函数式编程

函数式编程:容许把函数自己做为参数传入另外一个函数,还容许返回一个函数。python

1.高阶函数编程

一个函数能够接收另外一个函数做为参数,这种函数称为高阶函数闭包

def add(x,y,f):app

      return f(x) + f(y)函数式编程

 

x = -5 、y = 六、  f = abs、  f(x) + f(y) = abs(-5) + abs(6) = 11函数

return 11spa

2.map/reducecode

map函数:接收两个参数,一个是函数,一个是可迭代对象。map的做用是将传入的函数依次做用到序列的每一个元素,并将结果做为迭代器返回对象

>>> def f(x): ... return x * x ... >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce函数:接收两个参数,一个是函数,一个是可迭代对象。reduce的做用是将每个元素的函数结果做用到下一个元素中排序

reduce(f,[x1,x2,x3,x4]) = f(f(f(x1,x2),x3),x4)

def prod(x,y):
      return x * y

print(reduce(prod,[1,3,5]))   #15

3.filter

filter函数用于过滤序列,一样接收函数和可迭代对象,将函数做用于每个元素中,而后进行筛选

4.sorted

排序函数能够直接比较两个元素的大小

sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) ['about', 'bob', 'Credit', 'Zoo']

5.返回函数

函数嵌套函数时,将内部函数做为结果进行返回。内部函数能够引用外部函数的参数和局部变量。这种方式称为闭包。

返回函数不要引用任何循环变量,或者是变化的变量。函数的返回值不是当即执行,而是在调用以后才开始执行。若要使用循环变量,则须要再建立新的函数,将该变量做为参数传入。

6.匿名函数

lambda x : x * x   =    def f(x):

                                        return x * x

也能够先将匿名函数赋值给变量,再调用该变量。

7.装饰器

在代码动态运行期间动态增长功能,被称为装饰器(就是用一个透明的大函数包裹起来,在程序运行时调用这个函数)

#定义

def log(func):

      def wrapper(*args,**kw):

            print('call %s():' % func.__name__)  #两横

            return func(* args,**kw)

      return wrapper

 

@log                                  =                 now = log(now)

def   now():

        print('2018-12-11')

#调用

now()

#输出

call  now():

2018-12-11

8.偏函数

偏函数位于functools的模块中,名称为partial。做用为将一个函数的某些参数给固定住,返回一个新的函数,从而加强做用。

相关文章
相关标签/搜索