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操作摄像头截图实现远程监控的例子
Mar 25 Python
一些Python中的二维数组的操作方法
May 02 Python
Python处理字符串之isspace()方法的使用
May 19 Python
简单谈谈python的反射机制
Jun 28 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
python集合常见运算案例解析
Oct 17 Python
使用python制作一个解压缩软件
Nov 13 Python
Python实现钉钉订阅消息功能
Jan 14 Python
logging level级别介绍
Feb 21 Python
tensorflow模型转ncnn的操作方式
May 25 Python
python 制作网站小说下载器
Feb 20 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
php实现的日历程序
2015/06/18 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
python数据结构之链表的实例讲解
2017/07/25 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python中shell执行知识点
2020/05/06 Python
python线程池如何使用
2020/05/28 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
办公室内勤工作职责
2013/12/11 职场文书
施工安全标语
2014/06/07 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
雨中的树观后感
2015/06/03 职场文书
在职证明格式样本
2015/06/15 职场文书
网吧温馨提示
2015/07/17 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android