'if'语句中的行条件?

有时我打破长的条件下if小号多个行。 最明显的做法是:

  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

但这不是很漂亮。 :-)

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


你不需要在你的第二条线上使用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_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

我想我更喜欢:

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()

是的,为了清晰起见,我们正在进行一些垂直房地产交易。 很值得它IMO。

链接地址: http://www.djcxy.com/p/26775.html

上一篇: line conditions in 'if' statements?

下一篇: Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()