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

时间:2015-11-26 16:51:35

标签: python code-formatting

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

通常,使用PEP8建议和一些逻辑打破长行,事情很简单,但我遇到了这90个字符的长行,缩进了3次:

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

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

4 个答案:

答案 0 :(得分:5)

我不喜欢我建议你的想法,因为好的做法是将这一行改写成更具可读性的东西。但是,如果你需要更好地将现有代码格式化为科学报告,那么你有我的建议:

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

事实上,您也可以通过这种方式拆分索引。

答案 1 :(得分:3)

有两种方法可以打破界限。

  • 使用\
    您可以将它插入(甚至在变量之间)并从那里取下它:

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

为了便于阅读,我更喜欢后者。

答案 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)

答案 3 :(得分:1)

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

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