这个问题专门针对编码约定。我知道在这种情况下使用 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
语句和 bool 文字。我会编写一个使用 and
和 or
的 return
语句。
return (not selected.hasPassed()
and (selected.getPrereqs() == 'none'
or all(x.hasPassed()
for x in selected.getPrereqs()))
这与您用英语描述的方式很接近:如果您没有通过它,则可以参加该类(class),并且如果该类(class)没有先决条件< strong>或如果您已通过所有先决条件。
正如 John Kugelman 指出的那样,如果 getPrereqs
返回一个空列表而不是 'none'
,您可以进一步将其缩减为
return (not selected.hasPassed()
or all(x.hasPassed()
for x in selected.getPrereqs())
关于python - 与 return 语句一起使用 'elif' 或连续的 'if' 语句更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69326777/