这是一个简短的程序,它给我一个错误,我很难理解:
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
它并不像我试图打电话给currTime
或timeout
。这里发生了什么,我不理解?
答案 0 :(得分:4)
你不能同时拥有一个名为timeout
的函数和。重命名其中一个。
目前,您首先将timeout
绑定到浮点值0.0
。然后通过定义timeout()
函数重新绑定它。最后但并非最不重要的是,通过致电start_timer()
重新绑定timeout
,返回浮点数:
当您尝试执行print timeout()
时,timeout
将被绑定到浮点值,而不再是函数。
答案 1 :(得分:2)
你创建了一个名为timeout
的函数,但是你重写了它并使timeout
成为一个浮点数:
timeout = time.time() + TIMEOUT_LENGTH
您需要更改函数的名称或浮点名称。它们都不能命名为timeout
。