python装饰器decorator

python装饰器decorator

format

def xxx (被装饰的函数):
----def yyy (若被装饰函数有参数,则输入)
----。。。。。。。
----被装饰函数(若被装饰函数有参数,则输入)
----。。。。。。。
----return 被装饰函数 #若被装饰函数种含有return,则需要增加该句

example

import  time
def display_time(func):  # ①
    def wrapper(*args):        # ②   *args,不知道几个参数,有几个参数传几个参数
        t1 = time.time()   # ③
        result = func(*args)    # ④   func()=count_prime_nums()
        t2 = time.time()   # ⑩
        print("Total time: {:.4} s".format(t2-t1))       # 11
        return result
    return wrapper

def is_prime(num):                  # ⑦
    if num < 2:
        return False
    elif num == 2:
        return True
    else:
        for i in range(2, num):
            if num % i ==0:
                return False
        return True

@display_time   # ①
def count_prime_nums(maxnum):            # ④
    count = 0                      # ⑤
    for i in  range(2, maxnum):     # ⑥
        if is_prime(i):            # ⑦
            count = count+1        # ⑧
    return count                   # ⑨

count = count_prime_nums(10000)
print(count)

output

Total time: 0.2543 s
1229
  1. 运行count_prime_nums()函数,首先是运行装饰器部分display_time()
  2. 在display_time()部分,运行到func()函数,即count_prime_nums()函数(被装饰函数)
  3. 若被装饰函数count_prime_nums()有return,则装饰器display_time()也需要return语句
  4. *args,表明有几个参数就传几个,不确定参数个数下使用

reference resources

B站–正月点灯笼–《python小技巧:装饰器(decorator)》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值