偏函数与@functools.wraps装饰器

1.偏函数

保留已知参数,以后调用会自动携带它

简单案例

import functools

def func(a1,a2):
    print(a1+a2)

new_func = functools.partial(func,8)

new_func(7)        # 15
new_func(2)        # 10
new_func(8)        # 16

 2.@functools.wraps(func)

  wraps的作用是将被装饰的函数的一些属性传给修饰器函数(wrapper),让它具备某些功能

一般情况下:

def f1():
    print('123')

print(f1.__name__)  #123

加上装饰器:

def wrapper(func):
    def inner(*args,**kwargs):
        return func(*args,**kwargs)
    return inner

@wrapper
def f1():
    print('123')

print(f1.__name__)  #inner

用上装饰器后,此时发现这里f1的名称是inner,如果我们还需要原本的名称,这里就需要使用@functools.wraps,相当于伪装

import functools

def wrapper(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        return func(*args, **kwargs)
    return inner


@wrapper
def f1():
    print('123')

print(f1.__name__)  # f1

注意,这个知识点在我们的flask源码中会用上

posted @ 2018-09-03 22:37  -Learning-  阅读(162)  评论(0)    收藏  举报