在 装饰器01 中,index函数添加装饰器auth之后,index.__name__变成了inner, 但是我们可以使用functools工具让index.__name__ 仍然等于index.

代码如下:

import functools
def auth(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        print('在index函数调用之前做一些事。。。')
        ret = func(*args, **kwargs)  # 这儿的func就是index函数
        print('在index函数调用之后做一些事。。。')
        return ret

    return inner


# 给index函数添加auth这个装饰器,就相当于将index函数作为入参传给auth
@auth
def index():
    print('调用真正的index函数')

# 调用index函数
# index('admin')

print(index.__name__)  # index

 

posted on 2020-02-13 10:33  显示账号  阅读(98)  评论(0编辑  收藏  举报