鱼C论坛

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

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

[复制链接]
发表于 2022-11-8 11:41:20 | 显示全部楼层 |阅读模式
10鱼币
import time
def tmd(func): 
    print('开始运行。。。')
    start = time.time()
    func()
    stop = time.time()
    print('结束运行。。。')
    print(f'一共耗时{(stop - start):.2f}秒。')

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

tmd(mc)
    

纯手打,插入代码不会缩进4空格 8空格代替。。。两段代码,一样效果。。装饰器一定要内嵌函数才能做装饰器么???
import time
def tmd(func):
    def cfc():
        print('开始运行。。')
        start = time.time()
        func()
        stop = time.time()
        print('结束运行。。')
        print(f'一共耗时{(stop-start):.2f}秒')
    return cfc

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

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

最佳答案

查看完整内容

当然,装饰器所依托的技术本质是闭包,必须是内嵌函数才能胜任。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-8 11:41:21 | 显示全部楼层    本楼为最佳答案   
          当然,装饰器所依托的技术本质是闭包,必须是内嵌函数才能胜任。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

你这种写法也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 10:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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