这篇文章主要介绍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
<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如何解决被修饰函数消失的问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注天达云行业资讯频道!