为了账号安全,请及时绑定邮箱和手机立即绑定

时间问题。。。运行时间算出来是0,被装饰过的函数变成了int型()Python 3.x


import time

from _functools import reduce


def factorial_decorator(str_func_args):

    def decorator(factorial):

        def warpper(*args, **kw):

            startTime = time.time()

            funced = factorial(*args, **kw)

            finishTime = time.time()

            if str_func_args == 'ms':

                atime = (finishTime - startTime) * 1000

            else:

                atime = (finishTime - startTime)

            print('call  in %f%s' % ( atime , str_func_args))

            print(type(funced))

            return funced

        return warpper

    return decorator  


@factorial_decorator('ms')

def factorial(n):

    return reduce(lambda x,y: x*y, range(1,n+1))


print(factorial(10))

结果:

call  in 0.000000ms

<class 'int'>

3628800


正在回答

1 回答

def warpper(*args, **kw):

            startTime = time.time()

            funced = factorial(*args, **kw)                            #这行,funced是变量,factorial(*args,**kw)是函数,                                                                                          #调用时,函数factorial(*args,**kw)执行后的计算结果                                                                                          #赋值给了变量funced,也就是funced=3628800,所                                                                                            #以下面的print(type(funced)是整形。

            finishTime = time.time()

            if str_func_args == 'ms':

                atime = (finishTime - startTime) * 1000

            else:

                atime = (finishTime - startTime)

            print('call  in %f%s' % ( atime , str_func_args))

            print(type(funced))                                                

            return funced                                                       #这里返回的funced结果也是3628800

至于程序运行的时间是0.0000ms ,我看了下你的代码没找到问题,我觉得可能是你的计算机运行速度比较快吧,所用的时间已经远小于可以显示的最小时间精度。你试试把time.time()全部换成time.clock(),看看有没有不同。


1 回复 有任何疑惑可以回复我~
#1

慕神3407587 提问者

换成time.clock()确实显示除了时间,大佬可以解释一下么。。。谢谢~
2018-09-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

时间问题。。。运行时间算出来是0,被装饰过的函数变成了int型()Python 3.x

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信