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);