欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python实用小技巧之装饰器

程序员文章站 2022-04-09 08:46:08
...

python的装饰器:

假设我们要给很多函数统计函数运行时间,一般情况我们会给每个函数做如下处理:

import time

def fun()
	t1 = time.time()
	函数体...
	t2 = time.time()
	print(t2-t1)

如果加上装饰器以后就不需要每个函数都做上面的处理。

import time

def show_distance_time(func):
    def wrapper(*args):
        t1 = time.time()
        res = func(*args)
        t2 = time.time()
        print(func.__name__, "time", t2 - t1 )
        return res
    return wrapper

# 判断该数是否为质数
def is_prime(num):
    if num < 2 : return False
    if num == 2 : return True
    mid = int(num**(0.5))
    for i in range(2, mid + 1):
        if num % i == 0:
            return False
    return True

# 统计start到end之间质数的个数
@show_distance_time
def count_prime_nums(start, end):
    if start > end : return 0
    count = 0
    for i in range(start, end+1):
        if is_prime(i):
            count += 1
    return count

# 求1到end的和
@show_distance_time
def sum_until(end):
    sum1 = 0
    for i in range(end):
        sum1 += i
    return sum1

if __name__ == "__main__":
    count_prime_nums(1, 200000)
    sum_until(200000)
    
output:
count_prime_nums time 0.33507466316223145
sum_until time 0.006981849670410156