我不时会再次回答这个问题。对此有一般性的答案吗?
如果有一个if-else结构且if部分中包含continue
,break
或return
,那么是否应该跟else
可读性或某些原因?
if v == 0:
continue # / break / return
else: # is this necessary?
...
答案 0 :(得分:2)
从语义上讲,没有要求将...
置于else
子句中。你是否做的主要是个人偏好。
当我在考虑如何构建这样的代码时,存在相互竞争的考虑因素。一方面,我喜欢将嵌套级别的数量保持在最低限度。另一方面,我尝试适度使用break
和continue
,因为在我看来,它们使得控制流程更难以遵循。
由于这些原因,我几乎不会使用你问题中显示的表格。相反,我会写
if v == 0:
continue
# ...
或
if v != 0:
# ...
我通常更喜欢后者给前者。选择在很大程度上取决于# ...
块中的代码量(根据经验,我会尽量保持最小值)。
答案 1 :(得分:1)
可能没有必要,但我认为这是一个好主意,因为
和缩进的块使得条件为True
或False
时您希望发生什么。
if foo:
do_this()
break
else:
do_that()
此处,do_this()
和do_that()
是“在同一级别”。在我看来,这看起来比
if foo:
do_this()
break
do_that()
答案 2 :(得分:0)
编辑:我认为这取决于我们使用if-else构造的用法的上下文。但是,为了便于阅读,可以理解,最好使用其他。
答案 3 :(得分:0)
是。
<强>一个强>:
为了便于阅读。
<强> 2 强>:
它可以帮助您调试应用程序。假设你有一个代码块,其中if语句不需要else块,而else块没有任何意义,永远不会被命中。
您始终可以在其中放置print语句或调用错误消息代码以捕获可能的错误数据操作。
我希望这会有所帮助。