在“ if”语句中设置多行条件的样式?

有时我将ifs中的长条条件分解为几行。最明显的方法是:


  if (cond1 == 'val1' and cond2 == 'val2' and

      cond3 == 'val3' and cond4 == 'val4'):

      do_something

在视觉上不是很吸引人,因为动作与条件融为一体。但是,这是使用正确的4个空格的Python缩进的自然方法。


目前,我正在使用:


  if (    cond1 == 'val1' and cond2 == 'val2' and

          cond3 == 'val3' and cond4 == 'val4'):

      do_something

但这不是很漂亮。:-)


您能推荐一种替代方法吗?


慕田峪9158850
浏览 410回答 3
3回答

胡说叔叔

您不需要在第二条条件行上使用4个空格。可能使用:if (cond1 == 'val1' and cond2 == 'val2' and        cond3 == 'val3' and cond4 == 'val4'):    do_something另外,不要忘记空白比您想象的更灵活:if (          cond1 == 'val1' and cond2 == 'val2' and        cond3 == 'val3' and cond4 == 'val4'   ):    do_somethingif    (cond1 == 'val1' and cond2 == 'val2' and        cond3 == 'val3' and cond4 == 'val4'):    do_something两者都相当丑陋。也许丢了括号(尽管《风格指南》不鼓励这样做)?if cond1 == 'val1' and cond2 == 'val2' and \   cond3 == 'val3' and cond4 == 'val4':    do_something这至少使您与众不同。甚至:if cond1 == 'val1' and cond2 == 'val2' and \                       cond3 == 'val3' and \                       cond4 == 'val4':    do_something我想我更喜欢:if cond1 == 'val1' and \   cond2 == 'val2' and \   cond3 == 'val3' and \   cond4 == 'val4':    do_something这是《样式指南》,(自2010年起)建议使用括号。

陪伴而非守候

在简并的情况下,我采用了以下内容:简而言之,其为AND或OR。if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):它可以刮掉几个字符,并清楚表明该条件没有任何微妙之处。

汪汪一只猫

有人必须在这里提倡使用垂直空格!:)if (     cond1 == val1     and cond2 == val2     and cond3 == val3   ):    do_stuff()这使得每个条件都清晰可见。它还可以更清晰地表达更复杂的条件:if (    cond1 == val1     or         (     cond2_1 == val2_1          and cond2_2 >= val2_2          and cond2_3 != bad2_3        )   ):    do_more_stuff()是的,为了清楚起见,我们将权衡一些垂直房地产。海事组织值得。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python