其他继续,休息或返回

时间:2014-03-12 10:54:36

标签: python if-statement return break continue

我不时会再次回答这个问题。对此有一般性的答案吗?

如果有一个if-else结构且if部分中包含continuebreakreturn,那么是否应该跟else可读性或某些原因?

if v == 0:
    continue # / break / return
else: # is this necessary?
    ...

4 个答案:

答案 0 :(得分:2)

从语义上讲,没有要求将...置于else子句中。你是否做的主要是个人偏好。

当我在考虑如何构建这样的代码时,存在相互竞争的考虑因素。一方面,我喜欢将嵌套级别的数量保持在最低限度。另一方面,我尝试适度使用breakcontinue,因为在我看来,它们使得控制流程更难以遵循。

由于这些原因,我几乎不会使用你问题中显示的表格。相反,我会写

if v == 0:
  continue
# ...

if v != 0:
  # ...

我通常更喜欢后者给前者。选择在很大程度上取决于# ...块中的代码量(根据经验,我会尽量保持最小值)。

答案 1 :(得分:1)

可能没有必要,但我认为这是一个好主意,因为

  • 明确胜过隐含(禅宗的Python,蒂姆彼得斯)
  • 可读性计数(同上)

和缩进的块使得条件为TrueFalse时您希望发生什么。

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语句或调用错误消息代码以捕获可能的错误数据操作。

我希望这会有所帮助。