Python装饰器实例

"""
通用装饰器的写法:
def wrapper(fn): # wrapper: 装饰器, fn: 目标函数
    def inner(*args, **kwargs):
        # 在目标函数执行之前……
        ret = fn(*args, **kwargs) # 执行目标函数
        # 在目标函数执行之后……
        return ret
    return inner

@wrapper
def target():
    pass

target() # => inner()

一个函数可以被多个装饰器装饰
@wrapper1
@wrapper2
def target():
    print('我是目标函数')
结果 wrapper1 wrapper2 TARGET wrapper2 wrapper1

"""

# 例子1
def guanjia(game):
    # *,** 表示接收所有参数,打包成元组和字典
    def inner(*args, **kwargs): # inner添加了参数,args元组,kwargs字典
        print("打开外挂")
        # *,** 表示把args元组和kwargs字典打散成位置参数以及关键字参数传递进去
        game(*args, **kwargs) 
        print("关闭外挂")
    return inner

@guanjia
def play_dnf(username, password):
    print("开始玩dnf", username, password)

@guanjia
def play_lol(username, password, hero):
    print("开始玩lol", username, password, hero)

play_dnf("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值