从forloop返回

2024-10-01 09:30:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,我想知道:

def func(self, foo):
    for foo in self.list:
        if foo.boolfunc(): return True
    return False

是很好的做法。在

我可以从上面的循环中返回还是应该使用while循环?在

^{pr2}$

我的java教授警告我们不要在循环中使用中断,但这在技术上不是中断,它更简洁,所以。。。是的

谢谢


Tags: inselffalsetrueforreturniffoo
3条回答

你的例子没有错,但最好写下来

def func(self, foo):
    return any(foo.boolfunc() for foo in self.list)

应该提到在Python中,for loops can have an else clause。else子句只在循环因列表耗尽而终止时执行。在

所以你可以写:

def func(self):
    for foo in self.list:
        if foo.boolfunc():
            return True
    else:
        return False

你的教授提倡一种叫做“单点返回”的实践,它基本上是说任何代码块都应该只有一个出口点。循环中的中断有点不同于此,但通常集中在一起。在

至少可以说,这是一个有争议的观点,当然也不像“永远不要使用goto”那样硬性规定。按他的方式做可能值得——你可以安抚他,也可以看到这两种方法的好处,但如果违反了单点返回可以使他们的代码更具可读性,那么大多数人可能不会对单点返回过于严格。在

相关问题 更多 >