鱼C论坛

 找回密码
 立即注册
查看: 1850|回复: 3

求大佬解释下下面代码

[复制链接]
发表于 2021-1-15 14:52:44 | 显示全部楼层 |阅读模式

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

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

x
这是一个计算函数snn运行时间的代码,但我看不懂两处*args,**argkw的意思,还有如果我不想用第二段语法糖@timecal形式,用timecal(snn(100))为啥算不出运行时间的结果? 谢谢!
import time

def timecal(func):
    def wrapper(*args,**argkw):
        start = time.time()
        func(*args,**argkw)
        stop = time.time()
        print('运行时间=%s' % (stop - start))
    return wrapper

@timecal     
def snn(n, beg = 1):
    s = 0
    for i in range(beg, n + 1):
        s += i
    print('%s - %s 的和为 %s;' % (beg, n, s))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-15 15:03:53 | 显示全部楼层
补充下我的意思是:上面计算snn运行时间用
snn(100)
就能得出运行时间的结果
但是如果去掉@timecal这行,并且在下面计算
timecal(snn(100))
算不出snn(100)的运行时间,这是为什么?
如果我不想用语法糖@timecal这种形式,怎样才能得出snn(100)的运行时间?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-15 16:06:49 | 显示全部楼层
timeal(snn)(100)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-15 16:12:25 | 显示全部楼层
代码请看楼上,*arg传入的是元组,**argkw传入的是字典,跟你传的参数有关,timecal第一句传入的是一个函数,如果用你那种输入方法,你就是输入了一个值了,怎么可能得出结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 21:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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