将被装饰的函数的一些属性值赋值给 装饰器函数,最终让属性的显示更符合我们的直觉。 from functools import wrapsdef wapper(func): @wraps(func) # 帮助我们设置函数的元信息 def inner(*args, **kwargs): return func(*args, **kwargs) return inner@wapperdef f1(): pass@wapperdef f2(): passprint(f1.__name__) #不加wraps装饰器修复,__name__都为innerprint(f2.__name__) #加上wraps修复后还是原来函数的信息
偏函数
from functools import partial# 偏函数def foo(a1, a2): print(a1, a2)# 相当于给函数foo默认传递了一个参数,再次调用时不必再传这个函数new_func = partial(foo, 1)new_func(2)# 1 2
chain
from itertools import chain# chain的作用就是链接def v1(x): return xv2 = [44, 55, 66]foo = chain([v1], v2) # 参数必须是可迭代对象print(type(foo)) #for item in foo: if callable(item): print(item(1)) else: print(item) # 1 # 44 # 55 # 66