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

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

创建一个布尔值变量 check = False,然后 while True: ..... check = 某个条件 最后 if check: 做某事 else: 做另一件事 - Bargros
可能是Python-如何在for循环中使用return语句?的重复问题。 - wjandrea
2个回答

3

使用yield。它类似于return,但可以在循环中使用。更多详细信息,请参见“yield”关键字是什么?

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

0

每次调用 timer() 函数时,您都会重置 time_ = 0

尝试在函数外部实例化 time_,这样它就可以在下一次调用 timer() 函数时继续增加。

time_ = 0

def timer ():
    time_ += 1
    return time    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接