首页 > 编程语言 > 详细

python装饰器

时间:2017-02-14 23:03:08      阅读:320      评论:0      收藏:0      [点我收藏+]

装饰器: 本质是函数,(装饰其他函数)就是为其他函数添加附加功能。
原则:
    1 不能修改被装饰函数的源代码
    2 不能修改被装饰函数的调用方式

实现装饰器知识储备:
1 函数即“变量”
2 高阶函数
    把一个函数名当做实参传给另外一个函数。
    返回值中包含函数名
    
3 嵌套函数
    函数中定义函数。
    

高阶函数 + 嵌套函数 => 装饰器

#################
不带参数的装饰器:

imort time
def  run_time(func):
    def deco(*args,**kwargs):
        start_time = time.time()
        func(*args,**kwargs)
        stop_time = time.time()
        print("the %s run time is %s" % (func,(stop_time-start_time)))
    return deco
@run_time
def test(name,age):
    time.sleep(2)
    print(name,age)
test(‘xiaoming‘,22)
print()

################
带参数的装饰器:

def auth(authtype):
    print(authtype)
    def out_wrapper(func):
        def wrapper(*args,**kwargs):
            if authtype == ‘a‘:
                print("wrapper if:", authtype)
            elif authtype ==‘b‘:
                print("wrapper elif:",authtype)
            func(*args, **kwargs)
        return  wrapper
    return out_wrapper
@auth("b")
def test1(name,age):
    print(name,age)
test1(‘abc‘,22)


本文出自 “不惧寒冬” 博客,谢绝转载!

python装饰器

原文:http://bujuhandong.blog.51cto.com/1443515/1897505

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!