#第五步:带有返回值的装饰器  把第四步复制过来
#用于扩展基本函数的函数
def kuozhan(func):
#内部函数(扩展之后的eat函数)
def neweat():
#以下三步就是扩展之后的功能,于是我们把这三个哥们做成一个函数
#取名叫做neweat
#扩展功能1
print('饭前要洗手')
#调用基本函数
result1 = func()
#扩展功能2
print('饭后溜一圈') #未来的eat函数没有返回值,所以在最后调用的时候返回值为None
#为neweat添加返回值
return result1 #这里需要有返回值才能传给eat
#添加返回值
#return 12 eat原来是函数,eat扩展之后还以函数的形式赋值给eat
#所以return后面必须是扩展之后的函数
#5装饰器用于返回未来的eat函数的return
#5而不是neweat(eat)自带的返回值
#5应该在neweat函数里面再加一个return
return neweat
#基本函数
@kuozhan#eat = kuozhan(eat) #eat就相当于以前的result,用来接收返回值
def eat():
print('吃饭')
return '睡觉'
#扩展之后的函数要重新赋值给基本函数!(但是此步骤还实现不了)
#eat = kuozhan(eat) #eat就相当于以前的result,用来接收返回值
#print(eat)#第四步的目的是为了让打印eat函数的时候打印一个函数
#而不是像第二步和第三步打印回来的是None
#调用函数
result = eat()#eat就是扩展的内部函数neweat函数,就是return返回的值
print('原函数的返回值为',result)

最新文章

  1. AngularJS表达式
  2. Lattice Codes
  3. JavaScript判断IE版本
  4. Net accounts命令
  5. 关于UI资源获取资源的好的网站
  6. iOS中scrollview是否要回弹
  7. 简单的两数之和再次乱入<< Add Two Numbers >>
  8. 阅读<构建之法>第三10、11、12章
  9. my-view-isnt-reflecting-changes-ive-made-to-the-underlying-tables
  10. 【leetcode】Merge Sorted Array(合并两个有序数组到其中一个数组中)
  11. ds18b20再硬件设计部分的注意事项
  12. vim 括号自动补全
  13. 自学 Python 3 最好的 入门 书籍 推荐(附 免费 在线阅读 下载链接)
  14. 消息中间件解决方案JMS
  15. mysql 开发进阶篇系列 1 SQL优化(show status命令)
  16. Android 弹出输入框
  17. 数据挖掘---Pandas的学习
  18. git与eclipse集成之代码冲突与解决
  19. [UE4]圆形的动态材质,使用VectorParameter、Get Dynamic Material、Set Vector Parameter Value
  20. Tomcat配置远程调试端口(windows、Linux)

热门文章

  1. canvas 画正方形和圆形
  2. linux的vsftp使用介绍
  3. 115-基于TI TMS320DM6467T Camera Link 机器视觉 智能图像分析平台
  4. zabbix入门之监控MySQL
  5. CS184.1X 计算机图形学导论(第三讲)
  6. axios之前端发送get与post请求模板
  7. 【串线篇】SQL映射文件select简单查询标签
  8. 如何使用Keka for Mac提取受密码保护的文件?用Keka提取文件的格式
  9. JavaScript之BOM+DOM
  10. js插件-图片椭圆轮播效果