装饰器的修复wraps,偏函数partial 以及chain

将被装饰的函数的一些属性值赋值给 装饰器函数,最终让属性的显示更符合我们的直觉。



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

 

posted @ 2018-03-21 16:26  选择远方,风雨兼程。  阅读(193)  评论(0编辑  收藏  举报