我应该如何打断这条Python长线?

我应该如何打断这条Python长线?,python,code-formatting,Python,Code Formatting,我正在格式化我的代码,这些代码将包含在报告的附录中,因此,关于80个字符的行不仅仅是PEP8格式,因为如果行太长,它们将继续超过纸张的宽度 通常,使用PEP8建议和一些逻辑来打断长行是很容易的,但我遇到了这条90个字符的长行,它缩进了3次: valleys.append(data.index(min(data[frontieres[f*2+1]:frontieres[f*2+2]]))) 如果可能的话,我应该如何在不更改变量名称的情况下打破它?只需使用变量: some_

我正在格式化我的代码,这些代码将包含在报告的附录中,因此,关于80个字符的行不仅仅是PEP8格式,因为如果行太长,它们将继续超过纸张的宽度

通常,使用PEP8建议和一些逻辑来打断长行是很容易的,但我遇到了这条90个字符的长行,它缩进了3次:

            valleys.append(data.index(min(data[frontieres[f*2+1]:frontieres[f*2+2]])))

如果可能的话,我应该如何在不更改变量名称的情况下打破它?

只需使用变量:

some_data = data[frontieres[f*2+1]:frontieres[f*2+2]]
min_some_data = min(some_data)
data_index = data.index(min_some_datan)
valleys.append(data_index)

显然,您可以内联任何导入变量。

我不喜欢我建议您这样做的想法,因为最好的做法是将该行重写为更可读的内容。然而,如果您必须为grater将现有代码格式化为科学报告,那么我的建议如下:

valleys.append(
  data.index(
    min(
      data[frontieres[f*2+1]:frontieres[f*2+2]]
)))
Python允许在括号之间拆分行,而无需任何额外的技巧

更正确的方法是:

valleys.append(
  data.index(
    min(
      data[frontieres[f*2+1]:frontieres[f*2+2]]
    )
  )
)

事实上,你也可以用这种方法分割索引。

有两种方法可以打破界限

  • 使用
    \

    您可以将其插入任何位置(甚至在变量之间),然后从那里取下:

            valleys.append(data.index(min(data[frontieres[f*2+1]\
                          :frontieres[f*2+2]])))
    
  • 中断(

    任何函数都可以在另一行接受参数

            valleys.append(data.index(min(
                data[frontieres[f*2+1]:frontieres[f*2+2]]
            )))
    

为了可读性,我更喜欢后者。

制作中间变量?至少一个用于
min
值。对于任何想编辑这个问题的人来说:缩进是故意的。你将许多步骤设置为一个。很明显,你会得到这么大的一行。有趣的观察结果。如果我比较我的下面的行变量加上重写,我感觉我的格式实际上比这些有多个变量的东西更具可读性。我的初衷一目了然。我不知道为什么一开始我没有考虑它!
        valleys.append(data.index(min(
            data[frontieres[f*2+1]:frontieres[f*2+2]]
        )))