鱼C论坛

 找回密码
 立即注册
查看: 2097|回复: 1

[已解决]python 函数

[复制链接]
发表于 2023-4-26 18:15:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import time

def time_master(func):
    print('开始运行程序')
    start = time.time()
    func()
    stop = time.time()
    print('结束程序运行')
    print(f'一共耗费了{(stop-start):.2f}秒。')

def myfunc():
    time.sleep(2)
    print('hello')

a=time_master(myfunc)
a()

开始运行程序
hello
结束程序运行
一共耗费了2.01秒。
Traceback (most recent call last):
  File "D:/BaiduNetdiskDownload/python/函数6-测试(自己做).py", line 16, in <module>
    a()
TypeError: 'NoneType' object is not callable

请教大神,这里的代码运行了但是最后报错,代码哪里有问题啊
最佳答案
2023-4-26 18:17:38
代码中的问题是您试图调用一个NoneType对象。这是因为time_master函数没有返回一个函数,而您试图将其返回值作为函数调用。实际上,您已经在time_master函数内部调用了func()。请参考以下修改后的代码:
import time

def time_master(func):
    def wrapper():
        print('开始运行程序')
        start = time.time()
        func()
        stop = time.time()
        print('结束程序运行')
        print(f'一共耗费了{(stop-start):.2f}秒。')
    return wrapper

def myfunc():
    time.sleep(2)
    print('hello')

a = time_master(myfunc)
a()

这里,我们将time_master函数修改为一个装饰器,它返回一个名为wrapper的内部函数。然后,我们将myfunc作为参数传递给time_master,并将返回的wrapper函数赋值给变量a。最后,我们调用a(),这将执行wrapper函数并间接地调用myfunc。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-26 18:17:38 | 显示全部楼层    本楼为最佳答案   
代码中的问题是您试图调用一个NoneType对象。这是因为time_master函数没有返回一个函数,而您试图将其返回值作为函数调用。实际上,您已经在time_master函数内部调用了func()。请参考以下修改后的代码:
import time

def time_master(func):
    def wrapper():
        print('开始运行程序')
        start = time.time()
        func()
        stop = time.time()
        print('结束程序运行')
        print(f'一共耗费了{(stop-start):.2f}秒。')
    return wrapper

def myfunc():
    time.sleep(2)
    print('hello')

a = time_master(myfunc)
a()

这里,我们将time_master函数修改为一个装饰器,它返回一个名为wrapper的内部函数。然后,我们将myfunc作为参数传递给time_master,并将返回的wrapper函数赋值给变量a。最后,我们调用a(),这将执行wrapper函数并间接地调用myfunc。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 09:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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