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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
Python中的choice()方法使用详解
May 15 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
python按行读取文件,去掉每行的换行符\n的实例
Apr 19 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
python文件排序的方法总结
Sep 13 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脚本中include文件出错解决方法
2008/11/20 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
PyQt5每天必学之组合框
2018/04/20 Python
python flask实现分页的示例代码
2018/08/02 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
全国道德模范事迹
2014/02/01 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
标准毕业生自荐信
2014/06/24 职场文书
调研座谈会发言材料
2014/08/23 职场文书
迎新生欢迎词
2015/01/23 职场文书
异地恋情人节寄语
2015/02/28 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
技术员岗位职责范本
2015/04/11 职场文书
抢劫罪辩护词
2015/05/21 职场文书