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 26 Python
Python json模块使用实例
Apr 11 Python
Python with用法实例
Apr 14 Python
python操作sqlite的CRUD实例分析
May 08 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
python使用super()出现错误解决办法
Aug 14 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
python excel多行合并的方法
Dec 09 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 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加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
第六章 php目录与文件操作
2011/12/30 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
php的4种常用运行方式详解
2016/12/22 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
js闭包学习心得总结
2018/04/17 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
python实现的简单抽奖系统实例
2015/05/22 Python
如何在python中使用selenium的示例
2017/12/26 Python
python实现整数的二进制循环移位
2019/03/08 Python
Python读取stdin方法实例
2019/05/24 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
介绍一下#error预处理
2015/09/25 面试题
女方婚礼新郎答谢词
2014/01/11 职场文书
母亲80寿诞答谢词
2014/01/16 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
政府个人对照检查材料
2014/08/28 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
英文投诉信格式
2015/07/03 职场文书
实习感想范文
2015/08/10 职场文书