python被修饰的函数消失问题解决(基于wraps函数)


Posted in Python onNovember 04, 2019

这篇文章主要介绍了python被修饰的函数消失问题解决(基于wraps函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

当使用@修饰符修饰函数时,会存在这样一个问题:被修饰的函数会消失(这是因为修饰函数没有设置返回值,如果设置了返回值,则就把返回值赋给被修饰函数,比如,test1函数的返回值设置为 return 6, 那么就把6赋值给test2,test2就不再是一个函数,而是一个int类型的变量,值就是6):

def test1(A):
  print("I am test1111111111")
@test1
def test2():
  print("I am test2222222222")
test2
print(type(test2))

输出如下:

I am test1111111111


<class 'NoneType'>

Nonetype和空值是不一致的,可以理解为Nonetype为不存在这个参数,空值表示参数存在,但是值为空

为了避免这个问题,可以使用wraps函数,它的作用是保证被修饰函数名不被改变

from functools import wraps

def test1(A):
  @wraps(A)
  def test3():
    print("I am test3333333")
  print("I am test1111111111")
  return test3


@test1
def test2():
  print("I am test2222222222")


test2
print(test2.__name__)
test2()

输出如下:

I am test1111111111
test2
I am test3333333

可以看到,test2函数的函数名没被改变,但函数功能却改变了,18行运行test2函数时,输出的是 I am test3333333

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网页请求urllib2模块简单封装代码
Feb 07 Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
老生常谈Python序列化和反序列化
Jun 28 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
Python3日期与时间戳转换的几种方法详解
Jun 04 Python
Python当中的array数组对象实例详解
Jun 12 Python
python中class的定义及使用教程
Sep 18 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
Python imread、newaxis用法详解
Nov 04 #Python
Python使用微信接入图灵机器人过程解析
Nov 04 #Python
python selenium循环登陆网站的实现
Nov 04 #Python
Django项目中使用JWT的实现代码
Nov 04 #Python
Python collections中的双向队列deque简单介绍详解
Nov 04 #Python
Python 下载及安装详细步骤
Nov 04 #Python
Django框架表单操作实例分析
Nov 04 #Python
You might like
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
php搜索文件程序分享
2015/10/30 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
Python使用剪切板的方法
2017/06/06 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
教师评语大全
2014/04/28 职场文书
中职生求职信
2014/07/01 职场文书
普通党员个人整改措施
2014/10/27 职场文书
见习报告格式范文
2014/11/08 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis