装饰器

装饰器

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

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

一. 装饰器的简单事例

def timer(func):                    #装饰器
    def inner(*args,**kwargs):
        '''执行函数之前要做的'''
        ret = func(*args,**kwargs)
        '''执行函数之后要做的'''
        return ret
    return inner

@timer                               #@timmer 相当于 func = timmer(func)
def func():
    print("我是一只小小鸟")

func()                               #func() = inner()    调用装饰器


计算结果:
我是一只小小鸟

在修饰的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("alex")


计算结果:

哈哈哈
alex是一只小小鸟
咿呀咿呀哟
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页