装饰器

装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象

应用场景:比如插入日志、性能测试、事务处理、缓存、权限校验等场景

一、装饰器的简单事例

def timer(func):
    def inner(*args,**kwargs):
        """执行函数前要做的"""
        ret=func(*args,**kwargs)
        """执行函数后要做的"""
        return ret
    return inner
@timer
def func():
    print('我是一只小小鸟')

func()#我是一只小小鸟

在修饰的func函数前打印"哈哈哈",函数执行后打印"呵呵"

def timer(func):
    def inner(*args,**kwargs):
        print('哈哈哈')
        ret=func(*args,**kwargs)
        print('呵呵呵')
        return ret
    return inner

@timer
def func():
    print('我是一只小小鸟')
func()
"""
哈哈哈
我是一只小小鸟
呵呵呵
"""

二、带参数的装饰器

def timer(func):
    def inner(*args,**kwargs):
        print('哈哈哈')
        ret=func(*args,**kwargs)
        print('呵呵呵')
        return ret
    return inner

@timer
def func(name):
    print('%s是一只小小鸟'%name)
func('abc')
"""
哈哈哈
abc是一只小小鸟
呵呵呵
"""
原文地址:https://www.cnblogs.com/z-x-y/p/9177903.html