python被修饰的函数消失问题解决(基于wraps函数)

作者:梁十安 时间:2021-07-22 17:32:34 

这篇文章主要介绍了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

来源:https://www.cnblogs.com/liangxiyang/p/11685740.html

标签:python,wraps,函数,修饰
0
投稿

猜你喜欢

  • 分享101个MySQL调试与优化技巧

    2024-01-20 23:36:58
  • Windows server 2008 r2上安装MySQL5.7.10步骤

    2024-01-15 06:47:11
  • Vue.js绑定HTML class数组语法错误的原因分析

    2024-04-30 10:20:07
  • JavaScript正则表达式的简单应用:高亮显示

    2008-07-20 12:46:00
  • Mysql 1864 主从错误解决方法

    2024-01-17 05:01:35
  • Django-migrate报错问题解决方案

    2021-11-05 13:30:16
  • 解决python多行注释引发缩进错误的问题

    2022-02-08 04:19:53
  • Python字符串本身作为bytes进行解码的问题

    2022-12-22 07:18:42
  • 这些关于Go中interface{}的注意事项你都了解吗

    2024-02-01 08:20:19
  • python使用正则表达式替换匹配成功的组

    2021-12-13 07:22:03
  • python随机模块random的22种函数(小结)

    2022-08-11 18:09:03
  • ASP实现控制虚拟主机功能的函数ADSI

    2008-10-12 13:12:00
  • Python语言描述机器学习之Logistic回归算法

    2023-08-31 01:14:35
  • 淘宝搜索框研究报告

    2010-07-27 12:49:00
  • Linux CentOS7下安装python3 的方法

    2023-09-17 03:40:08
  • ASP中利用正则表达式实现论坛UBB代码转换

    2008-02-29 11:49:00
  • 选项卡动态增删的效果(内嵌框架)

    2008-05-22 12:59:00
  • Python 文件读写操作实例详解

    2023-08-04 10:41:53
  • Golang中struct{}和struct{}{}的区别解析

    2024-04-23 09:36:21
  • 浅谈javascript中的作用域

    2024-05-11 09:31:22
  • asp之家 网络编程 m.aspxhome.com