装饰器:用来拓展原来函数功能的函数,目的是不改名原来函数的函数名,增加新的功能 装饰器的实现,all_time(fn),fn即被装饰的函数,在all_time(fn)的arr()方法中调用fn(),使用@all_time调用被装饰的函数; 如果被装饰的函数中有参数,那么装饰器函数中all_time(fn)中的arr()函数需要传参max_num,即arr(max_num),对arr方法中的fn函数在调用的时候也需要穿max_num,即fn(max_num); 如果被装饰的函数有返回值,那么装饰器函数中需要有返回值,即all_time(fn)方法中的return count import math def is_prem(prem): if prem<=2: return True for i in range(2,int(math.sqrt(prem))+1): if prem%i==0: return False else: return True def all_time(fn): def arr(max_num): t1=time.time() count=fn(max_num) t2=time.time() print(t2-t1) return count return arr @all_time def all_prem(max_num): count=0 for i in range(1,max_num): if is_prem(i): count=count+1 return count print(all_prem(100))
12-17
990
06-20
8468
07-19
8万+