装饰器是一个函数,主要作用是用来包装另一个函数或类。
包装的目的是在不改变原函数名的情况下,改变被包装函数(对象)的行为
装饰器函数:指一个装饰器传入一个函数,返回的也是一个函数
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。有了装饰器,就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
语法:
def 装饰器函数名(参数):
函数块
return 函数对象
带装饰器函数语法:
@ 装饰器函数名[(装饰器函数传参)]<换行>
def 函数名(参数列表):
语句块
示例1:
import time
def check_time(fn):
def myplay(t, f):
n1 = time.time() # 获取当前时间
fn(t, f)
n2 = time.time() # 获取调用之后的时间
print("总共话费时间:", n2-n1)
return myplay
@ check_time
def play(Title, frame):
print("正在播放:", Title, "的", frame, "帧!")
time.sleep(2)
play("猫和老鼠", 1)
play("猫和老鼠", 2)
play("猫和老鼠", 3)
示例2:模拟银行存取钱业务: