python被修饰的函数消失问题解决(基于wraps函数)
这篇文章主要介绍了python被修饰的函数消失问题解决(基于wraps函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
当使用@修饰符修饰函数时,会存在这样一个问题:被修饰的函数会消失(这是因为修饰函数没有设置返回值,如果设置了返回值,则就把返回值赋给被修饰函数,比如,test1函数的返回值设置为return6,那么就把6赋值给test2,test2就不再是一个函数,而是一个int类型的变量,值就是6):
deftest1(A): print("Iamtest1111111111") @test1 deftest2(): print("Iamtest2222222222") test2 print(type(test2))
输出如下:
Iamtest1111111111
Nonetype和空值是不一致的,可以理解为Nonetype为不存在这个参数,空值表示参数存在,但是值为空
为了避免这个问题,可以使用wraps函数,它的作用是保证被修饰函数名不被改变
fromfunctoolsimportwraps deftest1(A): @wraps(A) deftest3(): print("Iamtest3333333") print("Iamtest1111111111") returntest3 @test1 deftest2(): print("Iamtest2222222222") test2 print(test2.__name__) test2()
输出如下:
Iamtest1111111111 test2 Iamtest3333333
可以看到,test2函数的函数名没被改变,但函数功能却改变了,18行运行test2函数时,输出的是Iamtest3333333
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。