13978074582 发表于 2022-11-8 11:41:20

关于这个函数装饰器,为什么要嵌套呢??


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()

jackz007 发表于 2022-11-8 11:41:21

          当然,装饰器所依托的技术本质是闭包,必须是内嵌函数才能胜任。

tommyyu 发表于 2022-11-8 14:26:03

本帖最后由 tommyyu 于 2022-11-8 14:28 编辑

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

你这种写法也可以
页: [1]
查看完整版本: 关于这个函数装饰器,为什么要嵌套呢??