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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
python使用PyQt5的简单方法
Feb 27 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Django MEDIA的配置及用法详解
Jul 25 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
Python中Selenium库使用教程详解
Jul 23 Python
通用的Django注册功能模块实现方法
Feb 05 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系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
PHP实现八皇后算法
2019/05/06 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
BootStrap TreeView使用实例详解
2017/11/01 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
水果超市创业计划书
2014/01/27 职场文书
银行优秀员工事迹
2014/02/06 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
维稳承诺书
2015/01/20 职场文书
写给领导的感谢信
2015/01/22 职场文书
无房证明样本
2015/06/17 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
React配置子路由的实现
2021/06/03 Javascript