时间:2021-05-22
这篇文章主要介绍了python被修饰的函数消失问题解决(基于wraps函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
当使用@修饰符修饰函数时,会存在这样一个问题:被修饰的函数会消失(这是因为修饰函数没有设置返回值,如果设置了返回值,则就把返回值赋给被修饰函数,比如,test1函数的返回值设置为 return 6, 那么就把6赋值给test2,test2就不再是一个函数,而是一个int类型的变量,值就是6):
def test1(A): print("I am test1111111111")@test1def test2(): print("I am test2222222222")test2print(type(test2))输出如下:
I am test1111111111 <class 'NoneType'>Nonetype和空值是不一致的,可以理解为Nonetype为不存在这个参数,空值表示参数存在,但是值为空
为了避免这个问题,可以使用wraps函数,它的作用是保证被修饰函数名不被改变
from functools import wrapsdef test1(A): @wraps(A) def test3(): print("I am test3333333") print("I am test1111111111") return test3@test1def test2(): print("I am test2222222222")test2print(test2.__name__)test2()输出如下:
可以看到,test2函数的函数名没被改变,但函数功能却改变了,18行运行test2函数时,输出的是 I am test3333333
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
浅析javascript异步执行函数导致的变量变化问题解决思路for(vari=0;i
问题解决:生成的树是逐级加载的,在open函数中有一个生成节点的代码:代码复制代码代码如下:for(vari=0;i
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。创建函数修饰符的规则:(1)修饰符是一个函数(2)修饰符取被修
AndroidgetActivity()为空的问题解决办法在开发项目中有时会碰到getActivity函数为空的情况,导致apk空指针崩溃问题,看代码逻辑没有明
这篇文章主要介绍了Python定义函数时参数有默认值问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下在