return True stop the loop in Python?

前端 未结 3 411
我在风中等你
我在风中等你 2021-01-28 03:10

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

3条回答
  •  猫巷女王i
    2021-01-28 03:58

    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
    

    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.

    Demo:

    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
    

    Related: The Python yield keyword explained

提交回复
热议问题