2024-05-29 02:30:59 发布
网友
当我编写任何验证函数时,我编写的代码如下所示
方法1。在
def func(): for section in sections: if section.has_timetable(): return True return False
但是最近我在想退出这样一个函数是不是很好的做法呢?采用这种方法是否会产生任何后果,如果是,则应遵循方法2?在
方法2
是的,没关系!当然,你必须确保你确实得到了你想要的结果,但是如果你在一个循环中返回,不会有什么不好的事情发生。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语句处放置一个断点。在
break
return
一种Python式的写作方式
def has_timetable(sections): for section in sections: if section.has_timetable(): result = True break else: result = False return result
但不管你是返回还是提早返回都是一个品味问题,至少在这种情况下是这样。此函数易于阅读和理解,因此,多个return不会造成损害。在具有多个返回的较长函数中,可能很难获得所有的退出点。在
我会选择对你来说更可读的东西。在
是的,没关系!当然,你必须确保你确实得到了你想要的结果,但是如果你在一个循环中返回,不会有什么不好的事情发生。Return只是传递结果,实际上在循环中返回一些值是很常见的。在您的例子中,它是一个布尔值,所以您返回true(或者您可以将其视为1)或false(作为0)
方法1比方法2更有效,因为它在找到匹配条件后立即返回。然而,就良好实践而言,我觉得最好有一个返回语句。例如,如果要检查多个条件,则会有多个return语句,这会使调试变得困难(假设您希望在代码中放置一个断点,以便在函数返回之前检查返回值)。最后将在每个return语句处放置断点)。为了避免这种情况,您可以稍微修改一下方法2的代码,使其更有效,如下所示:
因此,您可以有多个
break
语句,而只有一个return
语句。调试时,只需在return
语句处放置一个断点。在一种Python式的写作方式
但不管你是返回还是提早返回都是一个品味问题,至少在这种情况下是这样。此函数易于阅读和理解,因此,多个
return
不会造成损害。在具有多个返回的较长函数中,可能很难获得所有的退出点。在我会选择对你来说更可读的东西。在
相关问题 更多 >
编程相关推荐