如何使用break、continue和return语句来避免Python中的深度嵌套代码



Pocoo风格指南建议使用breakcontinuereturn语句来避免深度嵌套的代码。你会怎么做?

一个简单的例子是:

for item in seq:
    if someCondition:
       # Here is our code block
       if blah:
           more.stuff()

你可以做这个

for item in seq:
    if not someCondition:
       continue
   # Now our code block is here
   if blah:
       more.stuff()

请注意,后者保存一个缩进级别。显然,您不能总是这样做,但在某些情况下,它可以提高可读性,在开始时处理"ifX然后立即停止"的条件,而不必在if块中封装大量代码。

例如,不写:

if param1Valid:
    if param2Valid:
        ....

你可以使用保护条款:

if not param1Valid:
    return
if not param2Valid:
    return
....

许多文章赞美保护条款的优点:

  • http://blog.mafr.de/2009/06/12/a-case-for-guard-clauses/
  • http://www.codinghorror.com/blog/2006/01/flattening-arrow-code.html
  • http://sourcemaking.com/implementation-patterns/guard-clause

您可以在带有continue关键字的循环中使用完全相同的方法。

最新更新