python如何解决被修饰函数消失的问题-创新互联
这篇文章主要介绍python如何解决被修饰函数消失的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
专注于为中小企业提供网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业扎赉诺尔免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。当使用@修饰符修饰函数时,会存在这样一个问题:被修饰的函数会消失(这是因为修饰函数没有设置返回值,如果设置了返回值,则就把返回值赋给被修饰函数,比如,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
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如何解决被修饰函数消失的问题-创新互联
链接分享:http://myzitong.com/article/dihpep.html