如何在while循环中使用return语句?

时间:2019-06-12 13:18:58

标签: python-3.x python-3.7

在我的程序中,我有一个计时器功能,它使用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

2 个答案:

答案 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