#######################################################################################################
#传统写法 ,主要功能和辅助功能写在一个函数内
####################################################################################################### import time def print_odds(): print("开始时间:",time.clock()) for i in range(100): if i%2 ==1: print(i) print("结束时间:",time.clock()) if __name__ == '__main__': print_odds() #######################################################################################################
#主要功能函数,辅助功能函数分离开的写法
#######################################################################################################
import time def count_time(func): #统计一个函数执行时间 start_time = time.clock() func() end_time = time.clock() print("总共用时:{}秒".format(end_time - start_time)) def print_odds(): #输出1-100之间的所有奇数 for i in range(100): if i%2==1: print(i) if __name__ == '__main__': count_time(print_odds) #######################################################################################################
#闭包函数写法 ,闭包函数: 一个函数,其参数和返回值都是函数
####################################################################################################### import time def print_odds(): #输出1-100之间的所有奇数 for i in range(100): if i%2==1: print(i) def count_time_wrapper(func): def improved_func(): start_time = time.clock() func() end_time = time.clock() print("总共用时:{}秒".format(end_time - start_time)) return improved_func if __name__ == '__main__': pp = count_time_wrapper(print_odds) #返回值是一个函数,pp 此时就是个函数 pp () #pp() 代表调用pp函数 #######################################################################################################
#装饰器写法
####################################################################################################### import time def count_time_wrapper(func): def improved_func(): start_time = time.clock() func() end_time = time.clock() print("总共用时:{}秒".format(end_time - start_time)) return improved_func @count_time_wrapper def print_odds(): #输出1-100之间的所有奇数 for i in range(100): if i%2==1: print(i) if __name__ == '__main__': print_odds() ####################################################################################################### #带参数装饰器 ####################################################################################################### import time def count_time_wrapper(func): def improved_func(*args,**kwargs): start_time = time.clock() ret = func(*args,**kwargs) end_time = time.clock() print("总共用时:{}秒".format(end_time - start_time)) return ret return improved_func def print_odds(lim=100): #输出1-100之间的所有奇数 cnt = 0 for i in range(lim): if i%2==1: #print(i) cnt = cnt +1 return cnt if __name__ == '__main__': print("增强前") print(print_odds()) #print(print_odds(lim=60)) print("-" * 100) print("增强后") ll = count_time_wrapper(print_odds) #ll() print(ll(lim=60)) print("-" * 100) ####################################################################################################### # 通用的闭包函数 ####################################################################################################### def general_wrapper(func): def improveed_func(*args,**kwargs): #接收函数参数 ret = func(*args,**kwargs) #传入参数并接收返回值 return ret return improveed_func
# ####################################################################################################### # # #多个装饰器 # # ####################################################################################################### def wrapper1(func1): print("第一个闭包") def improved_func1(func): print("在第一个闭包内调用函数") return improved_func1 def wrapper2(func2): print("第二个闭包") def improved_func2(): print("在第二个闭包内调用函数") return improved_func2 @wrapper1 @wrapper2 def oringinal_func(): print("主功能函数") if __name__ == '__main__': print("!" * 150) oringinal_func = wrapper2(oringinal_func) print(oringinal_func.__name__) print ("!" * 150) oringinal_func = wrapper1(oringinal_func) print(oringinal_func.__name__)
标签:__,python,###################################################################### From: https://www.cnblogs.com/chengxuyonghu/p/16786355.html