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进阶篇之字典操作总结
Nov 16 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
Django中的Signal代码详解
Feb 05 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
python制作简单五子棋游戏
Jun 18 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
pytorch+lstm实现的pos示例
Jan 14 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
详解Python中import机制
Sep 11 Python
python读取excel数据并且画图的实现示例
Feb 08 Python
python基于机器学习预测股票交易信号
May 25 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
文件上传程序的全部源码
2006/10/09 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
php实现微信支付之退款功能
2018/05/30 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JqGrid web打印实现代码
2011/05/31 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
浅析python的Lambda表达式
2019/02/27 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
《画》教学反思
2014/04/14 职场文书
产品销售计划书
2014/05/04 职场文书
禁毒宣传标语
2014/06/19 职场文书
征兵宣传标语
2014/06/20 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python