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绘图库Matplotlib的安装
Jul 03 Python
python实现udp数据报传输的方法
Sep 26 Python
numpy中索引和切片详解
Dec 15 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
对Python中9种生成新对象的方法总结
May 23 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
Jul 04 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
pygame实现成语填空游戏
Oct 29 Python
python db类用法说明
Jul 07 Python
5款实用的python 工具推荐
Oct 13 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 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 处理图片的类实现代码
2009/10/23 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
详解js类型判断
2018/05/22 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
javascript的this关键字详解
2019/05/20 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
python如何更新包
2020/06/11 Python
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
数据库基础的一些面试题
2012/02/25 面试题
招聘专员岗位职责
2014/03/07 职场文书
本科毕业生自荐信
2014/05/26 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
北大自主招生自荐信
2015/03/04 职场文书
学风建设主题班会
2015/08/17 职场文书
八年级历史教学反思
2016/02/19 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
详解python字符串驻留技术
2021/05/21 Python
Golang实现可重入锁的示例代码
2022/05/25 Golang