博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3装饰器
阅读量:5948 次
发布时间:2019-06-19

本文共 744 字,大约阅读时间需要 2 分钟。

装饰器:本质是函数(装饰其他函数-->为其他函数添加功能)
原则:1.不能被修改装饰的源代码      2、不能修改被装饰的函数的调用方式 知识储备: 1、函数即“变量” 2、高阶函数 3、嵌套函数 高阶函数+嵌套函数 = 装饰器 高阶函数: a.把一个函数名当做实参传给另一个函数

b.返回值中包含函数名 嵌套函数:

仅用高阶函数实现的装饰器

高阶函数+嵌套函数:实现装饰器。

装饰器函数定义时,通过将需要装饰的函数(装饰器的形参)放在嵌套函数里面,嵌套在内层的函数只进行函数定义,不进行函数的调用(内含的被装饰的函数就不会运行)。然后将装饰后的的嵌套函数地址返回。

装饰器用法:想装饰什么函数,就在哪个函数上一行头部 @装饰器名称

@装饰器名称

函数名

即:如下写法的简化写法

foo = deco(foo) foo() DeBug过程详解:   1、定义装饰器deco   2、调用deco   2.1、调用deco过程中:定义替换test1的函数timmer(foo函数)   2.2、调用deco过程中:返回定义的函数timmer(装饰后的foo函数),但是不做任何调用   3、调用装饰后的foo函数timmer   3.1、调用timmer过程中,先运行装饰的代码   3.2、调用timmer过程中,运行原始foo的调用。   3.3、调用timmer过程中,再运行装饰代码。   GAME OVER 完美完成!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 通用性装饰器,被装饰的函数输入参数不固定

 高级多功能装饰器(装饰器带参数)

 

转载于:https://www.cnblogs.com/zhangmingda/p/9053948.html

你可能感兴趣的文章
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
nginc+memcache
查看>>
php正则匹配utf-8编码的中文汉字
查看>>
linux下crontab实现定时服务详解
查看>>
Numpy中的random模块中的seed方法的作用
查看>>
用java数组模拟登录和注册功能
查看>>
关于jsb中js与c++的相互调用
查看>>
UVA 122 Trees on the level 二叉树 广搜
查看>>
POJ-2251 Dungeon Master
查看>>
tortoisesvn的安装
查看>>
URAL 1353 Milliard Vasya's Function DP
查看>>
速读《构建之法:现代软件工程》提问
查看>>