Python带参数的装饰器运行原理解析


Posted in Python onJune 09, 2020

关于装饰器的理解,特别像《盗梦空间》中的进入梦境和从梦境出来的过程,一层一层的深入梦境,然后又一层一层的返回,被带入梦境的是被装饰的函数,装饰器就是使人入梦的工具。

上代码:

from functools import wraps
def decorator_with_argument(argument=''):
  def outer(func):
    message = argument + func.__name__
    @wraps(func)
    def inner(*args, **kwargs):
      print(message)
      print('This is inner function running')
      return func(*args, **kwargs)
    return inner
  return outer

以上是装饰器的部分。

接下来,是带参数的装饰器:

@decorator_with_argument("Decorator's argument + ")
def pfunc(arg='default'):
  print('This is pfunc running')
  print(f'This " {arg} " is from pfunc argument')

最后,函数的运行:

pfunc("pfunc's argument")

函数本身也是带参数的。输出结果如下:

Decorator's argument + pfunc
This is inner function running
This is pfunc running
This " pfunc's argument " is from pfunc argument

Process finished with exit code 0

下图是关于梦境的具体图示:

Python带参数的装饰器运行原理解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
python 平衡二叉树实现代码示例
Jul 07 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
golang特有程序结构入门教程
Jun 02 Python
Python sorted对list和dict排序
Jun 09 #Python
python初步实现word2vec操作
Jun 09 #Python
Python生成随机验证码代码实例解析
Jun 09 #Python
在python下实现word2vec词向量训练与加载实例
Jun 09 #Python
Python实现寻找回文数字过程解析
Jun 09 #Python
pycharm 关掉syntax检查操作
Jun 09 #Python
Python控制台实现交互式环境执行
Jun 09 #Python
You might like
PHP与SQL注入攻击[二]
2007/04/17 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
php 猴子摘桃的算法
2017/06/20 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
Ruby元编程基础学习笔记整理
2016/07/02 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
python 杀死自身进程的实现方法
2019/07/01 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
《维生素c的故事》教学反思
2014/02/18 职场文书
太太口服液广告词
2014/03/20 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
python xlwt模块的使用解析
2021/04/13 Python
vue实现滑动解锁功能
2022/03/03 Vue.js