当使用@修饰符修饰函数时,会存在这样一个问题:被修饰的函数会消失(这是因为修饰函数没有设置返回值,如果设置了返回值,则就把返回值赋给被修饰函数,比如,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

(ps:已经是大三的。。。。。老菜鸡了,欢迎大佬们指正交流。。。。。菜哭了。。。5555)

***************不积跬步无以至千里***************

最新文章

  1. ABP领域层
  2. Android EventBus 3.0.0 使用总结
  3. GIT学习
  4. randow()方法
  5. Mac前端抓包小工具Charles4.0下载
  6. .NET 下各种Resource的读取方式
  7. Daily Scrum 11.12
  8. 【转】Kinect使用
  9. python----特性003
  10. CSS实例:水平居中和垂直居中的多种解决方案
  11. 17.1.1.5 Creating a Data Snapshot Using mysqldump 创建一个快照使用mysqldump:
  12. 用JS计算预计时间与现在时间的差
  13. const常量类型
  14. yum 源问题
  15. POJ-2421 Constructing Roads---确定部分边的MST
  16. Zabbix3.0基础教程之一:系统监控,zabbix安装与基本配置
  17. 读书笔记--《Effective C#》总结
  18. 【转】Windons+jenkins,构建java程序,提示C:\Windows\TEMP\jenkins5037773887088486383.bat Access is denied
  19. Aes加解密,php
  20. MySQL的log_bin和sql_log_bin 的区别

热门文章

  1. python使用beautifulsoup4爬取酷狗音乐
  2. java给图片写正反字体,并将二维码写到图片上,代码实现
  3. 201871010131-张兴盼《面向对象程序设计(java)》第一周学习总结
  4. day95_11_28,selenium定位元素,cookies获取
  5. acwing 17. 从尾到头打印链表
  6. vue项目实现路由按需加载的3种方式
  7. POJ2001Shortest Prefixes(Trie树)
  8. # Spring 练习ioc 、aop
  9. mathematica练习程序(曲线的曲率与挠率)
  10. 获取系统相关信息 (CPU使用率 内存使用率 系统磁盘大小)