装饰器

def auth(func):  #func为被装饰的函数

def inner(*args,**kwargs):
print("前")
ret = func(*args,**kwargs)
print("后")
return ret
return inner

@auth
def index():
print("index")

@auth
def detail():
print("detail")
return "xxxxx"

print(index.__name__) #打印的函数名为inner
print(detail.__name__) #打印的函数名为inner

print(index()) #打印结果为 前 index 后 None index函数中没有return返回None
print(detail()) #打印结果为 前 detail 后 xxxxx 有return也要返回return的值

 

from functools import wraps
def check_user(func):
    print("---1---")
    @wraps(func)
    def inner(*args,**kwargs):
        print("在被装饰函数之前做的事,判断等")
        ret = func(*args,**kwargs)
        print("在被装饰函数之后做的事,判断等")
        return ret
    return inner

@check_user
def test1():
    print("123456789")
    return "你好呀"

test1()

# ---1---
# 在被装饰函数之前做的事,判断等
# 123456789
# 在被装饰函数之后做的事,判断等
from functools import wraps
def check_user(func):
    print("---1---")
    @wraps(func)
    def inner(*args,**kwargs):
        print("在被装饰函数之前做的事,判断user等")
        ret = func(*args,**kwargs)
        print("在被装饰函数之后做的事,===")
        return ret
    return inner

def check_token(func):
    print("---2---")
    @wraps(func)
    def inner(*args,**kwargs):
        print("在被装饰函数之前做的事,判断token等")
        ret = func(*args,**kwargs)
        print("在被装饰函数之后做的事,xxxx")
        return ret
    return inner

@check_user
@check_token
def test1():
    print("123456789")
    return "你好呀"

test1()

# ---2---
# ---1---
# 在被装饰函数之前做的事,判断user等
# 在被装饰函数之前做的事,判断token等
# 123456789
# 在被装饰函数之后做的事,xxxx
# 在被装饰函数之后做的事,===

 

posted @ 2018-10-25 16:39  CHVV  阅读(97)  评论(0编辑  收藏  举报