鱼C论坛

 找回密码
 立即注册
查看: 3816|回复: 2

[已解决]关于这个函数装饰器,为什么要嵌套呢??

[复制链接]
发表于 2022-11-8 11:41:20 | 显示全部楼层 |阅读模式
10鱼币

  1. import time
  2. def tmd(func):
  3.     print('开始运行。。。')
  4.     start = time.time()
  5.     func()
  6.     stop = time.time()
  7.     print('结束运行。。。')
  8.     print(f'一共耗时{(stop - start):.2f}秒。')

  9. def mc():
  10.     time.sleep(2)
  11.     print('你好啊。。')

  12. tmd(mc)
  13.    

复制代码


纯手打,插入代码不会缩进4空格 8空格代替。。。两段代码,一样效果。。装饰器一定要内嵌函数才能做装饰器么???

  1. import time
  2. def tmd(func):
  3.     def cfc():
  4.         print('开始运行。。')
  5.         start = time.time()
  6.         func()
  7.         stop = time.time()
  8.         print('结束运行。。')
  9.         print(f'一共耗时{(stop-start):.2f}秒')
  10.     return cfc

  11. @tmd
  12. def mc():
  13.     time.sleep(2)
  14.     print('你好啊')

  15. mc()
复制代码
最佳答案
2022-11-8 11:41:21
          当然,装饰器所依托的技术本质是闭包,必须是内嵌函数才能胜任。

最佳答案

查看完整内容

当然,装饰器所依托的技术本质是闭包,必须是内嵌函数才能胜任。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-11-8 11:41:21 | 显示全部楼层    本楼为最佳答案   
          当然,装饰器所依托的技术本质是闭包,必须是内嵌函数才能胜任。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-11-8 14:26:03 | 显示全部楼层
本帖最后由 tommyyu 于 2022-11-8 14:28 编辑

装饰器相当于加工一个函数的函数,它的返回值应该是一个函数(被加工过的函数)

你这种写法也可以
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 05:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表