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实现动态加载模块、类、函数的方法分析
Jul 18 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
Pytorch环境搭建与基本语法
Jun 03 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
Sep 04 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
五种Python转义表示法
Nov 27 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一个找二层目录的小东东
2012/08/02 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
判断控件是否已加载完成的代码
2010/02/24 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
Python缩进和冒号详解
2016/06/01 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python监控键盘输入实例代码
2018/02/09 Python
Django如何自定义分页
2018/09/25 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
python做接口测试的必要性
2019/11/20 Python
python脚本后台执行方式
2019/12/21 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
Linux的主要特性
2016/09/03 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript