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函数参数*args**kwargs用法实例
Dec 04 Python
使用Python操作Elasticsearch数据索引的教程
Apr 08 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python实现PS图像明亮度调整效果示例
Jan 23 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
详解Python绘图Turtle库
Oct 12 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
Python类的动态绑定实现原理
Mar 21 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
spyder 在控制台(console)执行python文件,debug python程序方式
Apr 20 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 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
解析php多线程下载远程多个文件
2013/06/25 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
vue生命周期实例小结
2018/08/15 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
分享一个常用的Python模拟登陆类
2015/03/29 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python实现用户登录系统
2016/05/21 Python
json跨域调用python的方法详解
2017/01/11 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
食品安全承诺书范文
2014/08/29 职场文书
个人作风建设总结
2014/10/23 职场文书
话题作文之诚信
2019/11/28 职场文书
Go timer如何调度
2021/06/09 Golang
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技