在我的程序中,我有一个计时器功能,它使用while循环。我希望它在循环时返回从其开始经过的时间,而不停止该函数。
def timer():
time_ = 0
while True:
time.sleep(1)
time_ += 1
return time_
但是return打破了循环。 如果时间是x,我需要类似return的命令来启动另一个功能:
if timer() < 20:
# do something
else:
# do something else
答案 0 :(得分:3)
使用yield
。就像return
,但可以循环使用。有关更多详细信息,请参见What does the "yield" keyword do?
def timer():
time_ = 0
while True:
time.sleep(1)
time_ += 1
yield time_
for i in timer():
if i < 20:
# do something
else:
# do something else
答案 1 :(得分:0)
每次调用time_ = 0
函数时,都要重置timer()
。
尝试在函数外部实例化time_
,以便下次调用timer()
函数时它可以保持递增。
time_ = 0
def timer ():
time_ += 1
return time