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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
Python文件处理
Feb 29 Python
利用python发送和接收邮件
Sep 27 Python
Python变量和数据类型详解
Feb 15 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
Python Process创建进程的2种方法详解
Jan 25 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
Python torch.flatten()函数案例详解
Aug 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
团员的自我评价
2013/12/01 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
模具数控专业自荐信
2014/01/27 职场文书
求职毕业生自荐书
2014/02/08 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
踏青活动策划方案
2014/08/19 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书