首页 > 其他 > 详细

2018年9月28日函数part4多个装饰器和迭代器

时间:2018-10-07 21:51:39      阅读:163      评论:0      收藏:0      [点我收藏+]

一、多个装饰器

1、当一个被装饰的对象同时叠加多个装饰器时规则:
(1) 装饰器的加载顺序是:自下而上
(2)装饰器内wrapper函数的执行顺序是:自上而下

import time

def timmer(func): #func=wrapper2的内存地址
    def wrapper1(*args, **kwargs):
        print(===================================>wrapper1运行了)
        start=time.time()
        res = func(*args, **kwargs) #===========================>跳到wrapper2去执行了,
        stop=time.time()
        print(run time is %s %(stop - start))
        return res
    return wrapper1

def auth(engine=file):
    def xxx(func): # func=最原始那个index的内存地址
        def wrapper2(*args, **kwargs):
            print(===================================>wrapper2运行了)
            name=input(username>>>: ).strip()
            pwd=input(password>>>: ).strip()
            if engine == file:
                print(基于文件的认证)
                if name == egon and pwd  == 123:
                    print(login successfull)
                    res = func(*args, **kwargs)
                    return res
            elif engine == mysql:
                print(基于mysql的认证)
            elif engine == ldap:
                print(基于ldap的认证)
            else:
                print(错误的认证源)
        return wrapper2
    return xxx

@timmer # index=timmer(wrapper2的内存地址) #index=wrapper1的内存地址
@auth(engine=file) #@xxx #index=xxx(最原始那个index的内存地址) #index=wrapper2的内存地址
def index():
    print(welcome to index page)
    time.sleep(2)

index() #wrapper1的内存地址()

 

2018年9月28日函数part4多个装饰器和迭代器

原文:https://www.cnblogs.com/ye-hui/p/9751618.html

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