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

一、多个装饰器

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的内存地址()

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

时间: 2024-10-03 17:58:45

2018年9月28日函数part4多个装饰器和迭代器的相关文章

4月28日 函数重载

<?php //函数重载 //条件: //1.函数名必须相同 //2.函数里面的参数个数不同,如果个数相同,类型不同 //基本不用的原因: //php是弱类型语言,所以没有重载 //php有可变参数的函数 class Ren { public $name; public $sex; function Say() { echo "你好"; } function Say($a) { echo $a."你好"; } function Say($a,$b) { ech

2018年12月14日 函数 总结

map() 处理序列中每个元素,得到迭代器,该迭代器  元素个数和位置与原来一致 filter() 遍历序列中的每个元素,判断每个元素得到布尔值,如果是true则留下来 people=[ {'name':"abc","age":100}, {"name":"def","age":80}, {'name':'sxj',"age":30}, {"name":"h

阮一峰网络日志 第37期 2018年12月28日

http://www.ruanyifeng.com/blog/2018/12/weekly-issue-37.html 声明:链接及文章内容为原博主阮一峰原创. 原文地址:https://www.cnblogs.com/sanen/p/10242378.html

php 学习路线 赵兴壮2014年4月28 日 加油

第一阶段 第一讲,WEB基础     1.1 网站基本知识: 1.2 网络协议介绍: 1.3 B/S与C/S结构的区别: 1.4 WEB编程.网站开发技术介绍.      第二讲,网页设计     2.1 Dreamweaver介绍及使用: 2.2 静态网页HTML语言: 2.3 标题与段落,换行与分割线: 2.4 表格.表单: 2.5 框架.超链接.图片.     实例:1,使用表格进行网页布局设计: 2,使用表单.表格.框架进行系统后台界面设计. 第三讲,DIV+CSS     3.1 CS

2018年5月20日--西安icpc邀请赛打铁总结

2018年5月20日--西安icpc邀请赛打铁总结  事后诸葛亮 大致回顾一下比赛,29号的热身赛和30号的正式赛. 热身赛总共三道题,一个小时,没有AC一道题目. A题是一个几何题目,审题时犯了一个错误--想当然认为数据就跟题目中的样例和图例是一个模型--都是以X轴为边的多边形,Z和C一直在做--一直在WA:受图例的影响过大,不是很懂实际的出题人的题意--多边形的每个顶点时随意的,不一定有条边是重叠于X轴的. 我刚开始的时候是倒着开始看题目的,先开的是c题,接着是b题.C题题意有点绕,后来经过

软考中高项学员:2016年3月28日作业

软考中高项学员:2016年3月28日作业 一.项目沟通管理1.项目沟通管理包括哪些过程?(记)2.阻碍有效沟通的因素有哪些?3.沟通计划编制的第一步是什么?目的是什么?4.沟通管理计划包括哪些内容(8条)5.干系人沟通计划包括哪些内容?(记)6.项目例会的主要议题有哪四条?7.项目内部启动会议.外部启动会议分别要解决什么问题?8.项目总结会议的目的有哪些?9.影响项目沟通的技术因素有哪些?9.常用的四种沟通方式是什么?各有何优缺点?10.信息分发的工具和技术是什么?11.经验教训总结过结果是什么

2014年4月28日 乱侃人际关系,反思学习方式

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}

2017年3月28日下午学习日志

2017年3月28日下午复习了高等数学,继续看了张宇高等数学基础班课程视频第一章极限与连续部分极限的计算法则中数列极限的计算和连续与间断,第二遍听课过程中能巩固之前所学内容,不懂的问题得以解决,印象也更加深刻,对复习有很大的帮助,背英语单词100个.

安康5月28日将举办汉江龙舟节暨西康高速公路通车典礼(欢乐中国行-魅力安康,中央三套6月7日首播)

第九届中国安康汉江龙舟节,将于2009年5月28日至30日,在安康隆重举行. 今年举办的第九届中国安康汉江“泸康杯”龙舟节,将把龙舟节开幕式与西康高速公路通车典礼成功对接,央视著名栏目“欢乐中国行—魅力安康”,将尽情展示绿色安康的无限魅力. 欢乐中国行—魅力安康的具体播出时间是:中央三套6月7日晚7点30分. http://space.tv.cctv.com/podcast/huanlezhongguoxing 据悉,西康高速通车后,西安到安康仅需要2-3小时.目前,安康还是陕西唯一一个没有高速