return True 在 Python 中停止循环?

2022-01-19 00:00:00 python return loops for-loop

问题描述

我仍然是初学者,但不知道为什么for 循环"中的return True"会在第一次通过后停止循环.如果我使用return"以外的其他东西,一切都很好.

I am still a beginner but does not know why the "return True" in a "for loop" stop the loop after the first pass. If I use something else than "return", everything is fine.

def roc_valid(self,cote_x,cote_y):
    from graph_chess import board
    p = board()
    side=(side_x,side_y)

    if side == (0,0):
        for (x,y) in (0,1),(0,2),(0,3):
            print(King.ok_to_move(self,x,y))
            if p.getPiece(x,y)=="" and king.ok_to_move(self,x,y):
                return True


解决方案

您可以使用 yield 语句.return 语句会停止函数并立即返回值,而 yield 语句将返回值并从离开的地方继续.

You can use the yield statement. A return statement stops the function and immediately and returns the value while yield statement will return the value and but continues where it left.

if side == (0,0):
    for (x,y) in (0,1),(0,2),(0,3):
        print(King.ok_to_move(self,x,y))
        if p.getPiece(x,y)=="" and king.ok_to_move(self,x,y):
            yield True

现在使用:list(roc_valid(self,cote_x,cote_y)) 获取所有返回值的列表,或者只是next(roc_valid(self,cote_x,cote_y))code> 只获取第一个值.

Now use: list(roc_valid(self,cote_x,cote_y)) to get a list of all returned values or just next(roc_valid(self,cote_x,cote_y)) to get only the first value.

演示:

def func():
    for i in xrange(5):
        if i % 2: 
            yield True
...             
>>> list(func())          #all returned values
[True, True]
>>> next(func())          #Just the first returned value
True

相关:Python yield 关键字解释

Related: The Python yield keyword explained

相关文章