Python学习笔记之python函数式编程

/ 0评 / 0

允许把函数本身作为参数传入另一个参数,还允许返回一个函数

高阶函数:
函数可以赋值给变量,变量可以指向函数,相当于C++中的函数指针,函数名就是指向函数的变量

map(f, [1,2,3,4]):将传入的函数依次作用到序列的每个元素,结果作为Iterator返回

reduce(f, [1,2,3,4]):把函数作用在序列上,把结果和下一个元素继续做累积计算,必须接收2个参数

filter(is_odd, [1,2,3,4]):把传入的函数作用于每个元素,根据返回值True,False过滤

Sorted([1,2,3,4], key=abs):排序

函数可以作为返回值,实现闭包

匿名函数lambda:lambda x:x*x,只能有一个表达式,不能用return

装饰器:在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),本质上,decorator就是一个返回函数的高阶函数,相当于把函数又进行了一次封装

def logger(text):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            print("start call %s" % (func.__name__))
            func_ret = func(*args, **kwargs)
            print("end call %s" % (func.__name__))
            return func_ret

        return decorator

偏函数:

functools.partial的作用就是把一个函数的某些参数给固定住,设置默认值,返回一个新的函数,调用这个新函数会更简单

int2 = functools.partial(int, base=2)