装饰器

# 函数的情况
# 1 无参无返回值
# 2 有参无返回值
# 3 无参有返回值
# 4 有参有返回值(万能装饰器)

# -------无参无返回值---------


def set_fun(func):
    def call_fun():
        print('权限认证')
        func()

    return call_fun


@set_fun  # test = set_fun(test)
def test():
    print('ahahahahaahahah')


# 装饰前的test是func指向的
# 装饰后的test是call_fun指向的

# test()

# ---------有参无返回值---------

def set_fun(func):
    def call_fun(*args, **kwargs):
        print('权限认证')
        func(*args, **kwargs)

    return call_fun


@set_fun  # test = set_fun(test)
def test(*args, **kwargs):
    print(args)
    print(kwargs)


# 装饰前test是func指向的
# 装饰后test是指向call_fun的

# test(100, a=200)

# -----------无参有返回值------

def set_fun(func):
    def call_fun():
        return func()

    return call_fun


@set_fun  # test = set_fun(test)
def test():
    return 200


# 装饰前test是func指向的
# 装饰后test是指向call_fun的

# print(test())

# -------------有参有返回值(万能装饰器)----------
def set_fun(func):
    def call_fun(*args, **kwargs):
        print('权限认证')
        return func(*args, **kwargs)

    return call_fun


@set_fun  # test = set_fun(test)
def test(*args, **kwargs):
    # print(args, kwargs)
    return args, kwargs


# 装饰前test是func指向的
# 装饰后test是指向call_fun的
# 装饰器不去改变原先的结果和值
print(test(100, a=200))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值