装饰器

  1.函数的有用信息

def wrapper(f):  # f = func1def inner(*args,**kwargs): #聚合#args (1,2,3)'''执行函数之前的相关操作'''ret = f(*args,**kwargs)  # 打散 1,2,3'''执行函数之后的相关操作'''return retreturn inner
@wrapper
def func1():"""此函数是完成登陆的功能,参数分别是...作用。:return: 返回值是登陆成功与否(True,False)"""print(666)return True
func1()
print(func1.__name__)
print(func1.__doc__)>>>666>>>inner>>>执行函数之前的相关操作    #因为此装饰器无法打印出完整装饰器执行操作,所以看下图----->正确打开方式:
from functools import wraps   #新加
def wrapper(f):  # f = func1
    @wraps(f)                 #新加def inner(*args,**kwargs): #聚合#args (1,2,3)'''执行函数之前的相关操作'''ret = f(*args,**kwargs)  # 打散 1,2,3'''执行函数之后的相关操作'''return retreturn inner
@wrapper
def func1():"""此函数是完成登陆的功能,参数分别是...作用。:return: 返回值是登陆成功与否(True,False)"""print(666)return True
func1()
print(func1.__name__)
print(func1.__doc__)>>>666>>>func1>>>          此函数是完成登陆的功能,参数分别是...作用。       :return: 返回值是登陆成功与否(True,False)

  2.带参数的装饰器

import time
def timmer(*args,**kwargs):def wrapper(f):def inner(*args,**kwargs):if flag:start_time = time.time()ret = f(*args,**kwargs)time.sleep(0.3)end_time = time.time()print('此函数的执行效率%f' % (end_time-start_time))else:ret = f(*args, **kwargs)return retreturn innerreturn wrapperflag = True
@timmer(flag,2,3)  # 两步:1,timmer(flag) --> wrapper 2,@wrapper 装饰器
def func1():print(666)@timmer(flag)
def func2():print(777)
func1()
func2()>>>666>>>此函数的执行效率0.300135>>>777>>>此函数的执行效率0.300409

  3.多个装饰器装饰一个函数

def wrapper1(func):  # func ==  f函数名def inner1():print('wrapper1 ,before func')  # 2
        func()print('wrapper1 ,after func')  # 4return inner1def wrapper2(func):  # func == inner1def inner2():print('wrapper2 ,before func')  # 1
        func()print('wrapper2 ,after func')  # 5return inner2
@wrapper2  #  f = wrapper2(f)  里面的f==inner1  外面的f == inner2
@wrapper1  # f = wrapper1(f)   里面的f==函数名f  外面的f == inner1
def f():  # 3print('in f')

转载于:https://www.cnblogs.com/xiaojipaobaba/p/8692255.html

12python(第十二天日记)相关推荐

  1. 华为实习日记——第二十二天

    昨天夜里下了雨,今早上出门清清凉凉的,很舒服的温度. 8:50到工位,处理了一下邮件,然后复习计算机图形学. 9:40晨会,这周我们的小组的任务是做当前版本的支撑工作,下周会有930版本的迭代开发,那 ...

  2. 老李说事:性能测试服务日记

    老李说事:性能测试服务日记 本次性能测试日记只是对过程进行记录,对工作进行梳理,其中技术问题涉及到很多,没有过多描述.项目全程15天,投入3个人(协调人,性能测试工程师两名),项目收入大约一辆5系进口 ...

  3. 简单日志(公开日记)

    忘记什么时候写的日记,也没标上时间,只是感觉没必要标,意义在于从开始写那天和结束那天.偶尔看到电脑里放的这个日记,没敢去看,看着人似乎重现了昨日的迷茫.我把自己的日记公开吧,让大家看看我的昨日.现在我 ...

  4. 一个女人的机器人日记

    自五月开始,我在某种程度上变成了机器人. 内置陀螺仪的自动稳定轮子代替了我的脚,iPad 的屏幕代替了我的脸,非广角摄像头代替了我的眼,我听不到的喇叭代替了我的口,每当收到高音就会发出爆裂声和嘘声的小 ...

  5. 《帝企鹅日记》观后感

    第一次看到是在高中的英语周报上,那时候蛮好奇的,企鹅也写日记,呵呵,后来想了想应该是纪录片,时隔三年,发现当初的猜测果然不假. 我觉得那些企鹅很可爱,也很漂亮.最重要的是,那一条条小生命有着顽强的毅力 ...

  6. axure 模板_《惢客创业日记》2019.09.03(周二) 用Axure管理项目流程

    今天,花了一整天的时间,搭建了一个本地服务器,并且,把Axure生成的网页系统部署在了IIS上.之所以,用Axure来把整个项目的资源做一个汇总,主要目的有三个: 第一.用Axure实现基于网页的项目 ...

  7. [UWP小白日记-10]程序启动屏(ios解锁既视感)

    [UWP小白日记-10]程序启动屏(ios解锁既视感) 原文:[UWP小白日记-10]程序启动屏(ios解锁既视感) 讲一下 微软爸爸的开发者大会2016又暴了个表达式动画和Windows.UI.Co ...

  8. 我先了解一下博客园创建随笔/文章/日记的过程与三者的区别(隐私等级,是否审核等)...

    我先了解一下博客园创建随笔/文章/日记的过程与三者的区别(隐私等级,是否审核等) 转载于:https://www.cnblogs.com/Totooria-Hyperion/p/5260289.htm ...

  9. 网络工程师成长日记333-某城市政府项目

    网络工程师成长日记333-某城市政府项目 这是我的第333篇原创文章,记录网络工程师行业的点点滴滴,结交IT行业有缘之人 直接上干货,拓扑图: 工程目的:排除故障 配置如下: LinWei#show ...

最新文章

  1. Django 基本命令
  2. PMP考试错题记录(2)
  3. Android踩坑日记:Okhttp设置User-Agent你可能没遇到的坑
  4. 湖南加速恢复,“望城速度”强势打样
  5. Netty实战 IM即时通讯系统(五)客户端启动流程
  6. std::string的split函数
  7. Koa nuxt最佳实践前篇
  8. [http]HTTP状态码含义
  9. 《精通软件性能测试与LoadRunner最佳实战》—第1章1.1节软件测试基础
  10. [转载] 七龙珠第一部——第112话 能恢复年轻吗 比克大魔王
  11. springmuvc如何设置jsp的input跳转_小程序有链接吗?如何获取小程序的链接?
  12. c语言diy杀毒程序源代码,C语言作品→杀毒程序(原始版)
  13. web前端开发面试题(四)
  14. Linux服务器下安装ANSYS
  15. matlab多重比较lsd法,多重比较法-LSD I 附赠统计学最全思维导图~
  16. 一个基于OpenDDS的股票报价Stock Quote和交易exchange 的完整用例介绍
  17. 南方电网计算机招聘笔试,南方电网招聘笔试题(附答案).PDF
  18. 安装Gitblit版本控制服务器
  19. 《卓有成效程序员》第四章
  20. Saleor:开源、免费的无头电子商务平台——系列教程,快速打造属于你的电商网站

热门文章

  1. Web API应用架构在Winform混合框架中的应用(3)--Winfrom界面调用WebAPI的过程分解...
  2. clone oracle ebs
  3. Vmware vSphere 5.0存储的连接
  4. GHOSTXP_SP3
  5. TechEd2011之游园录(3)
  6. 热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码...
  7. 4个开源 TCP/IP 栈被曝33个漏洞,数百万智能和工业设备受影响
  8. VMware 修复 Workstation、Fusion 中多个严重的代码执行漏洞
  9. mysql数据库中,查看数据库的字符集(所有库的字符集或者某个特定库的字符集)...
  10. [转] C++中 const, volatile, mutable用法