与 return 语句一起使用 'elif' 或连续的 'if' 语句是否更好?

新板

这个问题是专门关于编码约定的。我知道在这种情况下使用 if 或 elif 会产生相同的结果。只是想知道构建这个函数的“正确”方法是什么:

连续如果:

def can_take(self, selectedCourse):
    if selectedCourse.hasPassed():
        return False
    if selectedCourse.getPrereqs() != 'none':
        for prereq in selectedCourse.getPrereqs():
            if not self.courses[prereq].hasPassed():
                return False

    return True

使用 elif:

def can_take(self, selectedCourse):
    if selectedCourse.hasPassed():
        return False
    elif selectedCourse.getPrereqs() != 'none':
        for prereq in selectedCourse.getPrereqs():
            if not self.courses[prereq].hasPassed():
                return False

    return True
切普纳

如果我必须在两者之间做出选择,我可能会使用两个if陈述,但这只是个人喜好的问题。

如果我有第三种选择,我不会有任何 return带有布尔文字的语句。我会写一个return使用andand 的语句or

return (not selected.hasPassed()
        and (selected.getPrereqs() == 'none'
             or all(x.hasPassed() 
                    for x in selected.getPrereqs()))

这与您用英语描述的方式很接近:如果您通过该课程并且该课程没有先决条件您已通过所有先决条件可以参加该课程

正如 John Kugelman 指出的那样,如果getPrereqs返回一个空列表而不是'none',您可以进一步将其减少到

return (not selected.hasPassed()
        or all(x.hasPassed() 
               for x in selected.getPrereqs())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章