老师,运行输出问题

老师,运行输出问题

import time
  # clock装饰器
  def clock(func):
    def clocked(*args, **kwargs):
      # 起始时间
      start=time.time()
        # 程序执行
        result=func(*args ,**kwargs)
        # 结束时间
        end=time.time()
        # 输出
        print(func.__name__, end - start)
        return result


def test():
    print('装饰器……')
    time.sleep(5)
test()

老师,这作业我有点不大会~

我跟着一步一步写出来,可是输出只显示装饰器....时间没输出,请老师教导

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小猿 2023-11-23 16:32:50

同学,你好!同学有两处错误,如下:

1、被修饰函数上方要写上修饰的函数名

https://img1.sycdn.imooc.com/climg/655f0d9209a2677304010212.jpg

2、修饰函数内要return  clocked内层函数名,这样才可以调用执行内层函数clocked

https://img1.sycdn.imooc.com/climg/655f0dd009e414bf08390609.jpg

完整代码如下:

import time


# clock装饰器
def clock(func):
    def clocked(*args, **kwargs):
        # 起始时间
        start = time.time()
        # 程序执行
        result = func(*args, **kwargs)
        # 结束时间
        end = time.time()
        # 输出
        print(func.__name__, end - start)
        return result
    return clocked
@clock
def test():
    print('装饰器……')
    time.sleep(5)

祝学习愉快~

慕斯卡5178021 2023-11-23 15:38:25
import time
# clock装饰器
def clock(func):
    #注意缩进
    def clocked(*args, **kwargs):
        # 起始时间
        start=time.time()
        # 程序执行
        func(*args ,**kwargs)#直接调用函数,test()函数没有设置返回值
        # 结束时间
        end=time.time()
        # 输出
        print(func.__name__, end - start)
        # return result    #调用的函数没有返回值所以不需要return
        return end - start #可以返回一下时间,也可以什么都不return
    return clocked#需要返回内部函数
 
@clock #需要添加装饰器
def test():
    print('装饰器……')
    time.sleep(5)

test()

#再试一下有没有返回时间
t1 = test()
print('函数的返回值是',t1)

学生来解答一下,如果老师同学们看到了也点评一下有没有问题

  • 同学,你好!同学思路是没有问题的,代码也是对的。但要按照练习题的要求结果,内部函数不需要返回值。写也可以,不输出返回值即可。另外第一次执行test()函数已经输出了程序执行时间,无需第二次调用test()函数并输出返回值,下方红框内容可注释

    https://img1.sycdn.imooc.com/climg/655f11c009e7175713940844.jpg

    祝学习愉快~

    2023-11-23 16:50:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师