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 调用HBase的简单实例
Dec 18 Python
Python paramiko模块的使用示例
Apr 11 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
Django实战之用户认证(初始配置)
Jul 16 Python
python递归全排列实现方法
Aug 18 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
学python最电脑配置有要求么
Jul 05 Python
Python基于xlutils修改表格内容过程解析
Jul 28 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
探讨方法的重写(覆载)详解
2013/06/08 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
js常用函数 不错
2006/09/08 Javascript
ECMAScript 基础知识
2007/06/29 Javascript
DOM下的节点属性和操作小结
2009/05/14 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python实现获取Ip归属地等信息
2016/08/27 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
应用服务器有那些
2012/01/19 面试题
鲜果饮品店创业计划书
2014/01/21 职场文书
素质教育标语
2014/06/27 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python