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 thread 并发且顺序运行示例
Apr 09 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
Python处理文本换行符实例代码
Feb 03 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
linux下python中文乱码解决方案详解
Aug 28 Python
用python3读取python2的pickle数据方式
Dec 25 Python
Python urllib.request对象案例解析
May 11 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
Python如何批量生成和调用变量
Nov 21 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
在python3.9下如何安装scrapy的方法
Feb 03 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获取网络文件的实现代码
2010/01/01 PHP
学习php中的正则表达式
2014/08/17 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
javascript实现留言板功能
2020/02/08 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
Python偏函数实现原理及应用
2020/11/20 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
美国手机支架公司:PopSockets
2019/11/27 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
应届毕业生应聘自荐信
2013/12/07 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
母校寄语大全
2014/04/10 职场文书
学习作风建设心得体会
2014/10/22 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书