装饰器函数

1.装饰器
​ 装饰器:在不改变原函数的调用方式和函数,额外的增加功能
简单装饰器def timer(func):def inner():print(time.time())func()   #  原来的函数return inner
​
@timer  # func1 = timer(func1)
def func1():print('func1')
函数带返回值def timer(func):def inner():print(time.time())ret = func()  # 原来的函数return retreturn inner
原函数携带参数def download(func):def inner(*args, **kwargs):print('下载软件')func(*args, **kwargs)return inner
完整的装饰器的写法def wrapper(func):def inner(*args, **kwargs):# 执行被装饰函数之前进行的操作ret = func(*args, **kwargs)# 执行被装饰函数之后进行的操作return retreturn inner
装饰器带参数def outer(flag):def timer(func):def inner(*args, **kwargs):if flag:print(time.time())ret = func(*args, **kwargs)  # 原来的函数else:ret = func(*args, **kwargs)  # 原来的函数return retreturn innerreturn timer
​
@outer(True)  # func1 = timer(func1)  inner
def func1():print('func1')
多个装饰器装饰同一个函数def wrapper1(func):def inner(*args, **kwargs):print('wrapper1 前')  # 2ret = func(*args, **kwargs)print('wrapper1 后')  # 4return retreturn inner
​
def wrapper2(func):def inner(*args, **kwargs):print('wrapper2 前')  # 1ret = func(*args, **kwargs)print('wrapper2 后')  # 5return retreturn inner
​
@wrapper2  # func1 = wrapper2(func1)  wrapper2.inner   func=wrapper1.inner
@wrapper1  # func1 = wrapper1(func1)  wrapper1.inner   func=func1
def func1():print('func1')  # 3return 'func1的返回值'
​
print(func1())  # 6

装饰器修复技术from functools import wraps
def timer(func):@wraps(func)def inner():print(time.time())ret = func()  # 原来的函数return retreturn inner

  

转载于:https://www.cnblogs.com/PythonMrChu/p/10067158.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6G SDI/12G SDI 基带信号无压缩传输方案介绍

认知数字像素分辨率: 首先从分辨率(数字像素)角度来讲,从标清时代走到高清,从720x576到现在的1920x1080,宽高比从4:3到16:9,这个是我们比较熟悉的,4K实际上是建立在高清基础之上的,我们称之为“…

12.4日团队工作总结

今天团队的主要任务是注重于画图工具的设计,这就意味着我们首要的任务是将画图工具设置出来并可以完整运行,接下来才能顾及之前的改图软件,但今天在设计的过程中,遇到了两者无法无缝结合的问题,目前还没解决。 转载于:…

最短路径——Dijkstra算法以及二叉堆优化(含证明)

一般最短路径算法习惯性的分为两种:单源最短路径算法和全顶点之间最短路径。前者是计算出从一个点出发,到达所有其余可到达顶点的距离。后者是计算出图中所有点之间的路径距离。 单源最短路径 Dijkstra算法 思维 本质上是贪心的思想,声明一个…

linux shmget shmctl

shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key----------------------------------------------- key标识共享内存的键值: 0/IPC_P…

伯克利开源工具库RLib现已支持大规模多智能体强化学习

AI前线导读:近日,UC伯克利的研究团队RISELab在其Github的项目Ray Rlib 0.6.0中添加了面向多智能体强化学习(multi-agent Reinforcement Learning)的支持。本文由团队成员Eric Liang首发于RISELab团队主页,AI前线翻译整…

如何简单理解光圈大小对手机摄影的影响?

你,准备好参加今夏的朋友圈摄影大赛了吗? 现在的天气有多热,谁出门谁知道!出去玩还要背一台单反,绝对可以说是一种折磨了。但是,如果你拥有一台大光圈的手机,一样可以在朋友圈脱颖而出。 那么…

基于centos6.7的docker私有仓库搭建

2019独角兽企业重金招聘Python工程师标准>>> 1 仓库配置https认证 cd /etc/docker/ mkdir certs [rootdocker01 docker]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/docker01.key -x509 -days 365 -out certs/docker01.crt 填好相应的简称及email…

第十周软件工程作业-每周例行报告

一、PSP T名称C内容ST开始时间ED结束时间中断时间/min实际时间/min会议第一次Scrum会议11月17日16:0011月17日16:30030第二次Scrum会议11月18日15:0011月18日15:30030第三次Scrum会议11月19日17:0011月19日17:30030第四次Scrum会议11月20日11:3511月20日12:15040第五次Scrum会议…

MAVEN下载和安装

1.maven的下载 下载链接http://maven.apache.org/download.cgi从该网站下载最新版本 2.maven的安装 电脑上需要安装JDK环境,需要安装JDK7以上的版本。下载之后进行解压,将maven解压到不含中文和空格的一个目录 maven目录结构bin目录:mvn.bat、…

CCD/CMOS靶面尺寸型号标准

传感器尺寸指的是感光器对角线尺寸,1/1.7英寸(14.8毫米--导向管尺寸)大于1/2.3英寸(10.95毫米---导向管尺寸).采用同种技术水平的感光器,肯定是单…

Linux课程笔记 Day09 课上内容总结 MySql,Php的安装及Apache,Nginx,Php的优化

一 MySql 1.1 如何选择MySql的版本 1.2 MySql单实例安装 (1) 建立mysql用户 首先以root身份登陆到linux系统,然后执行如下命令创建mysql用户及用户组 [roottest3 ~]# groupadd mysql [roottest3 ~]# useradd -s /sbin/nologin -g …

jenkins 通过自动拉取Gitlab上的代码实现自动更新NGINX

所需要用到的环境: Gitlab: 172.20.7.70Jenkins: 172.20.7.71nginx: 172.20.7.72 gitlab 和Jenkins安装自行百度 开始实验操作 首先通过网页访问nginx,nginx默认测试页我是改了的 ,所以看到的不是它原…

Kylin工作原理、体系架构

核心思想:预计算。 对多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube,并存在HBase中,供查询时直接访问 将高复杂度的聚合运算、多表连接……操作转换成对预计算结果的查询。决定了Kylin拥有很好的快速查询、高并发能…

PPT怎么在线转视频?

PPT在线转视频的方法有哪些?在PPT中有些播放上的问题还是可以进行文件的转换,下面就给大家简单的介绍一下方法。步骤一:PPT转视频的直接方法是进入迅捷PDF在线转换器网站中,点击导航栏中的视频音频转换中的PPT转视频; …

夜貓子”必需的!——融合夜視技術

融合夜視技術是一項正在發展中的前沿技術,通過將多個工作在不同波段的夜視傳感器獲得的圖像經過處理後生成高質量的融合圖像,融合圖像的分辨率更高,能夠揭示出那些很難被看到的特徵。按照融合的方式,融合夜視技術可以分為數字融合…

Vue中登录模块

转载于:https://www.cnblogs.com/DZzzz/p/8921783.html

深度解析红外探测器

辐射/设计/技术之前我们跟大家解析了红外探测器的相关性能参数。 对于红外探测器的工作原理你了解多少呢?今天小编再继续上次的讲解,为大家解析非制冷红外焦平面探测器技术原理 及机芯介绍。 非制冷红外技术原理 非制冷红外探测器利用红外辐射的热效应&a…

Python2 Python3 爬取赶集网租房信息,带源码分析

*之前偶然看了某个腾讯公开课的视频,写的爬取赶集网的租房信息,这几天突然想起来,于是自己分析了一下赶集网的信息,然后自己写了一遍,写完又用用Python3重写了一遍.之中也遇见了少许的坑.记一下.算是一个总结.*python2 爬取赶集网租房信息与网站分析 分析目标网站url寻找目标标…

红外热成像技术原理

目前,新的热成像仪主要采用非致冷焦平面阵列技术,集成数万个乃至数十万个信号放大器,将芯片置于光学系统的焦平面上,无须光机扫描系统而取得目标的全景图像,从而大大提高了灵敏度和热分辨率,并进一步地提高…

深度学习简介(一)——卷积神经网络

本文的主要目的,是简单介绍时下流行的深度学习算法的基础知识,本人也看过许多其他教程,感觉其中大部分讲的还是太过深奥,于是便有了写一篇科普文的想法。博主也是现学现卖,文中如有不当之处,请各位指出&…