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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
Python re模块介绍
Nov 30 Python
python使用range函数计算一组数和的方法
May 07 Python
利用Python爬取可用的代理IP
Aug 18 Python
pycharm设置注释颜色的方法
May 23 Python
实例讲解Python3中abs()函数
Feb 19 Python
详解Python正则表达式re模块
Mar 19 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
基于K.image_data_format() == 'channels_first' 的理解
Jun 29 Python
10张动图学会python循环与递归问题
Feb 06 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
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
python实现telnet客户端的方法
2015/04/15 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python读取键盘输入的2种方法
2015/06/16 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
Python中作用域的深入讲解
2018/12/10 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
网上卖盒饭创业计划书
2014/01/26 职场文书
企业员工培训感言
2014/02/26 职场文书
养牛场项目建议书
2014/05/13 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技