Python装饰器

假设我们有这样一个需求,就是找出【2,num】之间有多少个素数,并且打印出代码执行的时间,我们就可以设计出一个装饰器实现逻辑与打印时间分离的功能,装饰器的作用是改变其他函数的功能,让你在这个函数的前后可以分别执行一段代码

import time

def display_time(func):
    def wrapper(*args):#args用来处理func的参数
        t1=time.time()
        result=func(*args)#result用来保存func还回出来的数据
        t2=time.time()
        print("Total time:{:.4}s".format(t2-t1))
        return result#通过这一步就会将func执行的结果还回出来
    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

#在执行count_primes_nums的时候会去执行装饰器display_time
@display_time
def count_prime_nums(num):
    count=0
    for i in range(2,num):
        if is_prime(i):
            count=count+1
    return count

count=count_prime_nums(100000)
print(count)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值