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中的多条件排序实现
Jun 07 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
学python爬虫能做什么
Jul 29 Python
python-jwt用户认证食用教学的实现方法
Jan 19 Python
python+playwright微软自动化工具的使用
Feb 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实现小型站点广告管理(修正版)
2006/10/09 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
在Python中表示一个对象的方法
2019/06/25 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
Unix如何添加新的用户
2014/08/20 面试题
机械绘图员岗位职责
2013/11/19 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
全国文明单位申报材料
2014/05/31 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
2014年电教工作总结
2014/12/19 职场文书
三峡大坝导游词
2015/01/31 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书