import time
def display_time(fun): ##这个fun是一个函数,是个指代,谁调用就指向谁
def inser(): ##内层函数,调用上面的display_time函数时实际上运行的是内层函数
t1=time.time()
fun() ##运行被调用的函数
t2=time.time()
print(t2-t1)
return inser()
#判断是否为素数
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 prime_num(): ##1.运行函数时会自动跳转到装饰器中
for i in range(2,10000):
if is_prime(i):
print(i)
prime_num()
##如果有返回值的时候
import time
def display_time(fun):
def inser():
t1=time.time()
res=fun() ##将返回值记录到新建立的res中进行储存
t2=time.time()
print(t2-t1)
return res ##将返回值再返回出来
return inser()
#判断是否为素数
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 prime_num():
count=0 ##进行计数
for i in range(2,10000):
if is_prime(i):
count+=1
return count
count = prime_num
print(count)
##这时如果直接使用print进行打印只会返回none,需要有返回值的做法为,在装饰器中再次进行返回。
##如果源代码的里面含有参数
import time
def display_time(fun):
def inser(*args): ##*args是参数
t1=time.time()
res=fun(*args) ##在执行函数中同样需要带入
t2=time.time()
print(t2-t1)
return res
return inser()
#判断是否为素数
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 prime_num(max): ##这个max就是参数
count=0
for i in range(2,max):
if is_prime(i):
count+=1
return count