返回True是否在Python中停止循环? [英] return True stop the loop in Python?
问题描述
我仍然是一个初学者,但是不知道为什么在"for循环"中返回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))
仅获取第一个值.
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
Related: The Python yield
keyword explained
这篇关于返回True是否在Python中停止循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!