码迷,mamicode.com
首页 > 编程语言 > 详细

python 装饰器

时间:2019-04-06 09:25:33      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:ret   wrapper   名称   **kwargs   UNC   after   lse   color   格式   

装饰器的主要功能:

在不改变函数调用方式(不改变原函数)的基础上在函数的前,后添加功能

装饰器的固定格式

def timmer(func):
    def inner(*args,**kwargs):
        set = func(*args,**kwargs)
        return set
    return inner  # 传内部函数的名称,不能加括号


@timmer  # @装饰器函数名   # func = timmer(func)
def func(*args,**kwargs):  # 被装饰器函数
    time.sleep(0.01)
    print(大家好)


ret=func()
print(ret)

带参数的装饰器

def outer(flag):
    def one(func):
        def two(*args,**kwargs):
            if flag:
                print(‘‘‘执行之前‘‘‘)
            ret= func(*args,**kwargs)
            if flag:
                print(‘‘‘执行之后‘‘)
            return ret
        return two
    return one

@outer(False)
def func():
    print(111)

func()

多个装饰器装饰一个函数

def wrapper1(func):
    def inner():
        print(wrapper1 ,before func)
        func()
        print(wrapper1 ,after func)
    return inner

def wrapper2(func):
    def inner():
        print(wrapper2 ,before func)
        func()
        print(wrapper2 ,after func)
    return inner

@wrapper2
@wrapper1
def f():
    print(in f)

f()

 

python 装饰器

标签:ret   wrapper   名称   **kwargs   UNC   after   lse   color   格式   

原文地址:https://www.cnblogs.com/iswuyi/p/10660760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!