time.clock(),在函数定义中使用时的奇数结果

时间:2014-08-18 11:09:30

标签: python python-3.x windows-xp

使用以下代码(Python 3.3.x,WinXp):

## debug function in a general/personal debug include file.
def timer_compare(time1, time2='', note='@', time3=time.clock()):
    print('time1',time1)
    time2 = time.clock() ## same as the function-passed time.clock() (just a little later)
    print('time2',time2)
    print('time3',time3)
    exit(321)

主代码文件中使用的来电代码:

time0 = time.clock()
## <other unrelated code.>
timer_compare(time0, time.clock())

我得到以下输出:

time1 0.0445(snip)
time2 0.0445(snip)
time3 0.0000043(snip) <- 4.385582001116343e-06

time3这里似乎有一个低数字的方法。 (有点看起来它是从刚刚创建的计时器案例中拉出来的。)

这里发生了什么/我错过了什么?

  • 我知道time.time()一般是首选/建议的time.clock(),以及为什么。

1 个答案:

答案 0 :(得分:2)

在定义时创建函数默认值,而不是在调用时创建。 timer_compare函数是一个对象,默认值在创建时被计算并作为该对象的属性存储。

由于您的函数是在导入模块时创建的(或者在Python首次加载顶级脚本时),因此time.clock()值非常低。

改为使用哨兵:

def timer_compare(time1, time2='', note='@', time3=None):
    if time3 is None:
        time3 = time.clock()