从循环内部返回是一个好的做法吗

2024-05-29 02:30:59 发布

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

当我编写任何验证函数时,我编写的代码如下所示

方法1。在

def func():
    for section in sections:
        if section.has_timetable():
            return True
    return False

但是最近我在想退出这样一个函数是不是很好的做法呢?采用这种方法是否会产生任何后果,如果是,则应遵循方法2?在

方法2

^{pr2}$

Tags: 方法函数代码infalsetrueforreturn
3条回答

是的,没关系!当然,你必须确保你确实得到了你想要的结果,但是如果你在一个循环中返回,不会有什么不好的事情发生。Return只是传递结果,实际上在循环中返回一些值是很常见的。在您的例子中,它是一个布尔值,所以您返回true(或者您可以将其视为1)或false(作为0)

方法1比方法2更有效,因为它在找到匹配条件后立即返回。然而,就良好实践而言,我觉得最好有一个返回语句。例如,如果要检查多个条件,则会有多个return语句,这会使调试变得困难(假设您希望在代码中放置一个断点,以便在函数返回之前检查返回值)。最后将在每个return语句处放置断点)。为了避免这种情况,您可以稍微修改一下方法2的代码,使其更有效,如下所示:

 def func():
    has_timetable = False
    for section in sections:
        if section.has_timetable():
            has_timetable = True
            break
    return has_timetable

因此,您可以有多个break语句,而只有一个return语句。调试时,只需在return语句处放置一个断点。在

一种Python式的写作方式

def has_timetable(sections):
    for section in sections:
        if section.has_timetable():
            result = True
            break
    else:
        result = False
    return result

但不管你是返回还是提早返回都是一个品味问题,至少在这种情况下是这样。此函数易于阅读和理解,因此,多个return不会造成损害。在具有多个返回的较长函数中,可能很难获得所有的退出点。在

我会选择对你来说更可读的东西。在

相关问题 更多 >

    热门问题