将被装饰的函数的一些属性值赋值给 装饰器函数,最终让属性的显示更符合我们的直觉。
from functools import wraps def wapper(func): @wraps(func) # 帮助我们设置函数的元信息 def inner(*args, **kwargs): return func(*args, **kwargs) return inner @wapper def f1(): pass @wapper def f2(): pass print(f1.__name__) #不加wraps装饰器修复,__name__都为inner print(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 x v2 = [44, 55, 66] foo = chain([v1], v2) # 参数必须是可迭代对象 print(type(foo)) # <class 'itertools.chain'> for item in foo: if callable(item): print(item(1)) else: print(item) # 1 # 44 # 55 # 66