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解析基于xml格式的日志文件
Feb 25 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
django启动uwsgi报错的解决方法
Apr 08 Python
python实现zabbix发送短信脚本
Sep 17 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
Python中Selenium对Cookie的操作方法
Jul 09 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
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
什么样的创业计划书可行性高?
2014/02/01 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
个人承诺书格式
2014/06/03 职场文书
个性车贴标语
2014/06/24 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis