使用以下代码(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这里似乎有一个低数字的方法。 (有点看起来它是从刚刚创建的计时器案例中拉出来的。)
这里发生了什么/我错过了什么?
答案 0 :(得分:2)
在定义时创建函数默认值,而不是在调用时创建。 timer_compare
函数是一个对象,默认值在创建时被计算并作为该对象的属性存储。
由于您的函数是在导入模块时创建的(或者在Python首次加载顶级脚本时),因此time.clock()
值非常低。
改为使用哨兵:
def timer_compare(time1, time2='', note='@', time3=None):
if time3 is None:
time3 = time.clock()