大珠提子 发表于 2021-1-15 14:52:44

求大佬解释下下面代码

这是一个计算函数snn运行时间的代码,但我看不懂两处*args,**argkw的意思,还有如果我不想用第二段语法糖@timecal形式,用timecal(snn(100))为啥算不出运行时间的结果?{:10_250:} 谢谢!
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))

大珠提子 发表于 2021-1-15 15:03:53

补充下我的意思是:上面计算snn运行时间用snn(100)就能得出运行时间的结果
但是如果去掉@timecal这行,并且在下面计算timecal(snn(100))算不出snn(100)的运行时间,这是为什么?
如果我不想用语法糖@timecal这种形式,怎样才能得出snn(100)的运行时间?{:9_221:}

°蓝鲤歌蓝 发表于 2021-1-15 16:06:49

timeal(snn)(100)

Jerry_Green 发表于 2021-1-15 16:12:25

代码请看楼上,*arg传入的是元组,**argkw传入的是字典,跟你传的参数有关,timecal第一句传入的是一个函数,如果用你那种输入方法,你就是输入了一个值了,怎么可能得出结果
页: [1]
查看完整版本: 求大佬解释下下面代码