0

这是一个简短的程序,它给了我一个我很难理解的错误:

import time
TIMEOUT_LENGTH = 0.4
TIMEOUT_CHECK = False
STOPPED = True
timeout = 0.0

def start_timer():
    global timeout
    global STOPPED
    global TIMEOUT_CHECK

    TIMEOUT_CHECK = False
    STOPPED = False
    timeout = time.time() + TIMEOUT_LENGTH

def stop_timer():
    global STOPPED
    global TIMEOUT_CHECK

    TIMEOUT_CHECK = False
    STOPPED = True

def timeout():   
    global timeout
    global STOPPED
    global TIMEOUT_CHECK

    currTime = time.time()
    if (currTime > timeout) and (STOPPED == False):
       TIMEOUT_CHECK = True
    return TIMEOUT_CHECK

start_timer()
print timeout()

运行它给了我:

Traceback (most recent call last):
  File "prob.py", line 34, in <module>
    print timeout()
TypeError: 'float' object is not callable

在我看来,我并没有试图打电话currTimetimeout。我不明白这里发生了什么?

4

2 回答 2

4

您不能同时拥有一个名为 的函数另一个变量timeout。重命名一个或另一个。

就目前而言,您首先绑定timeout到一个浮点值0.0。然后通过定义一个函数重新绑定它。timeout()最后但同样重要的是,通过再次start_timer()调用rebind ,返回浮点数:timeout

当您尝试执行print timeout()时,timeout已绑定到浮点值而不是函数。

于 2013-10-25T18:43:37.113 回答
2

您创建了一个名为 的函数timeout,但随后您覆盖了它并timeout在此处创建了一个浮点数:

timeout = time.time() + TIMEOUT_LENGTH

您需要更改函数的名称或浮点数的名称。他们都不能被命名timeout

于 2013-10-25T18:44:06.370 回答