Python TypeError float不可调用

时间:2013-10-25 18:42:25

标签: python typeerror

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

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。这里发生了什么,我不理解?

2 个答案:

答案 0 :(得分:4)

你不能同时拥有一个名为timeout的函数。重命名其中一个。

目前,您首先将timeout绑定到浮点值0.0。然后通过定义timeout()函数重新绑定它。最后但并非最不重要的是,通过致电start_timer()重新绑定timeout ,返回浮点数:

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

答案 1 :(得分:2)

你创建了一个名为timeout的函数,但是你重写了它并使timeout成为一个浮点数:

timeout = time.time() + TIMEOUT_LENGTH

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