functools 补充
1 wraps
在编写装饰器时,在实现前加入 @functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响。wraps 保存被装饰函数的原信息
    def decorator(f)    
        wraps(f)
        def inner(*args,**kwargs):
2 partial 函数
其实就是函数调用的时候,有多个参数 参数,但是其中的一个参数已经知道了,我们可以通过这个参数重新绑定一个新的函数,然后去调用这个新函数。
    from functools import partial
    def f(a,b):
        return a + b
    f1 = partial(f,10)
    print(f1(5))
    -->> 15
itertools 补充
1 chain
    from itertools import chain
    li = [1,2,3]
    li2 = [3,4,5]
    li3 = chain(li,li2)
    print(li3,list(li3))