【python】——自定义参数装饰器的例子与解释

code

def repeat(num):
    def my_decorator(func):
        def wrapper(*args, **kwargs):
            for i in range(num):
                print('wrapper of decorator {}'.format(i))
                func(*args, **kwargs)
        return wrapper
    return my_decorator

@repeat(4)
def greet(message):
    print(message)

greet('hello world')

# 输出:
# wrapper of decorator 0
# hello world
# wrapper of decorator 1
# hello world
# wrapper of decorator 2
# hello world
# wrapper of decorator 3
# hello world

这里装饰器@repeat(4)的整个流程为:

  1. 首先执行repeat(4)函数,返回my_decorator,num=4在repeat函数域都可用
  2. 于是@repeat(4)变成了@my_decorator,这就变成了普通的装饰器
  3. @my_decorator等价于 greet = wrapper
  4. 执行greet(‘hello world’) 等价于执行 wrapper(‘hello world’)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值