python装饰器

python装饰器

当一个函数中,不同逻辑混杂在一起的时候,程序的可读性会大打折扣。这个时候,可以考虑用一种叫做“装饰器”的东西来重新整理代码。
应用场景,顾名思义是去装饰一个东西,这里的东西指一个函数func,想要不修改func去为func添加一些附加功能,如权限验证,程序运行时间等。

import time

def display_time(func):
    def wrapper(*args):#这里wrapper其实就是新的逻辑上的func ,*args就是func里面传递过来的参数
        start = time.time()
        result = func(*args)#犹豫func函数有返回值 所以用result去接受一下 然后模拟func的返回,返回result
        end = time.time()
        print("Total time: {} s".format(end - start))
        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#为prime_nums(maxnumber)添加程序运行计数功能
def prime_nums(maxnumber):
    count = 0
    for i in range(2, maxnumber):
        if is_prime(i):
            count = count + 1
           # print(i)
    return count;#返回count数值

cnt = prime_nums(1000)#调用被装饰过的prime_nums函数
print(cnt);
原文地址:https://www.cnblogs.com/DengSchoo/p/12617935.html