装饰器
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。
它经常用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计
@在装饰器这里是作为Python语法里面的语法糖写法,用来做修饰
魔术方法 name 这是属于 python 中的内置类属性,就是它会天生就存
在与一个 python 程序中,代表对应程序名称,一般一段程序作为主线运行程序时其内置名称就是 main ,当自己作为模块被调用时就是自己的名字
def sleep(fun):
def begin():
fun()
print("zss睡着了")
return begin
@sleep
def eat():
print("zss吃饭了")
eat()
zss吃饭了
zss睡着了
运行流程:当被装饰的函数被调用时,函数体会被作为参数传递为装饰器函数,函数体被改变为装饰器内层函数,如果需要传参,则需要在装饰器内层函数使用形参进行接收
装饰器类
需要重写__call__方法,该方法会被自动调用
class Sleep(object):
def __init__(self):
pass
def __call__(self, fun):
def sleep():
fun()
print("睡觉")
return sleep
@Sleep()
def eat():
print("吃饭")
eat()