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实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python 爬虫模拟登陆知乎
Sep 23 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python 基础教程之str和repr的详解
Aug 20 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
python动态进度条的实现代码
Jul 03 Python
利用python求积分的实例
Jul 03 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
利用python控制Autocad:pyautocad方式
Jun 01 Python
详解pandas赋值失败问题解决
Nov 29 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 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 IN_ARRAY 函数使用注意事项
2010/07/24 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
JavaScript 私有成员分析
2009/01/13 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
js运动事件函数详解
2016/10/21 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
Python 字符串操作方法大全
2014/03/11 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
Python通过select实现异步IO的方法
2015/06/04 Python
关于Django外键赋值问题详解
2017/08/13 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
python实现泊松图像融合
2018/07/26 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
Python操作json的方法实例分析
2018/12/06 Python
Python中print和return的作用及区别解析
2019/05/05 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
python 画图 图例自由定义方式
2020/04/17 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
入党积极分子介绍信
2014/01/17 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js