一、Python 装饰器
Python 装饰器本身就是一个函数,它的作用是装饰一个其他的函数,但是不改变原有的程序功能,还要增添新的功能,调用函数时的接口没有变化。比如,装修一个房子,如果不隔音,我在墙上加一层隔音板,却不能把墙拆了,换成隔音材质。
import time #导入时间模块
def index():
time.sleep(2) #时间休眠2秒
start_time = time.time() #time.time 是时间戳,指北京时间19700101 080000 起至现在的总毫秒数
index()
end_time = time.time()
print(end_time - start_time) #2.0136349201202393
虽然完成了计时功能,但如果函数有非常多个,那每一个函数的计时都要定义开始时间和结束时间的变量,比较繁琐。
import time #导入时间模块
def index():
time.sleep(2) #时间休眠2秒
def calculate_time(f):
start_time = time.time()
f()
end_time = time.time()
print(end_time - start_time)
calculate_time(index) #2.0035324096679688
但装饰器不改变原有的函数调用接口,之前的函数是index 而现在要写上calculate_time(index),这样也是很不方便的。比如玩家在玩游戏时通常用WASD来控制上下