python学习笔记---函数式编程

1. 函数本身也可以赋值给变量,即:变量可以指向函数。

>>> f = abs
>>> f(-10)
10

成功!说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。

--> 函数名也可以看作是是变量。

编写高阶函数,就是让函数的参数能够接收别的函数(add(-5, 6, abs))

 

map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

reduce()把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算.

filter()也接收一个函数和一个序列, 和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素,返回新的Iterator。

sorted()函数可以对list进行排序。sorted(list, key=function, reverse=True)

lambda x: x * x   关键字lambda表示匿名函数,冒号前面的x表示函数参数。

 

一个完整的装饰器decorator的写法如下:

import functools

def log(func):
    @functools.wraps(func) #把原始函数的__name__等属性复制到wrapper()函数中
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

#带参数的decorator
import functools

def log(text):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator

functools.partial就是帮助我们创建一个偏函数的,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
 
posted @ 2017-08-20 16:31  ZhouHaining  阅读(204)  评论(0编辑  收藏  举报