2015-12-08 1 views
1

У меня есть следующие команды:Как разбить несколько команд в соответствии с PEP8?

DataFrame = df0.join(df1, how = 'outer').join(df2, how = 'outer').join(df3, how = 'outer')..... 

Я знаю, что я мог бы разделить его, как это:

dataFrame = df0.join(df1, how = 'outer') 
dataFrame = dataFrame.join(df2, how = 'outer') 
dataFrame = dataFrame.join(df3, how = 'outer') 
... 

Но я не уверен, что говорит PEP8 об этом, то, что является предпочтительным методом не превышать лимит 79 символов?

ответ

1

предпочтительный способ оберточной длинных линий является использование подразумеваемые линии продолжения Python внутри круглых скобок, скобки и фигурные скобки. Длинные строки могут быть разбиты на несколько строк, обертывая выражения в круглых скобках. Они должны использоваться вместо использования обратной косой черты для продолжения строки.

Обратные косые черты могут по-прежнему быть подходящими время от времени. Например, длинные, множественные with -statements не может использовать неявное продолжение, так что обратные косые являются приемлемыми:

with open('/path/to/some/file/you/want/to/read') as file_1, \ 
    open('/path/to/some/file/being/written', 'w') as file_2: 
    file_2.write(file_1.read()) 

Другой такой случай с assert отчетности.

Убедитесь, что линия продолжена правильно. Предпочтительным местом для разрыва вокруг двоичного оператора является оператор, а не перед ним.

- https://www.python.org/dev/peps/pep-0008/

Т.е. для вашего примера:

dataFrame = (df0.join(df1, how='outer'). 
       join(df2, how='outer'). 
       join(df3, how='outer')) 
+0

@pacholik, спасибо! Исправленный. – kay

+1

На самом деле это не аргумент, так что все может быть в порядке. – pacholik

+0

@pacholik, на самом деле, я не уверен, что является нормативно правильным. Я думаю, это более читаемо, если вы поместите первый 'join()' на ту же строку, так что * хотите, чтобы все было в порядке. :-) – kay

-1

Вы не должны создавать фиктивные переменные, чтобы удовлетворить PEP. Однако здесь предлагается разделить команду на несколько строк .

DataFrame = df0.join(df1, how = 'outer') \ 
       .join(df2, how = 'outer') \ 
       .join(df3, how = 'outer') 

Наконец, в некоторых случаях вы не можете сделать линии короче 80 символов!

+0

«Наконец, в некоторых случаях вы не можете сделать линии короче 80 символов!» Не могли бы вы привести пример? Я не думаю, что это правда, если ваши имена переменных длиннее 78 символов. – kay

+0

Кроме того, хотя я предпочитаю помещать точки в новую строку, он не рекомендуется PEP-8. – kay

+0

Длинные линии, когда идентификатор класса/методов уже есть пространство, длинные списки, которые выглядят хуже на многострочном (субъективном) доступе к частным методам и т. Д. –

2

Вставьте символы новой строки после точек. Если вы окружите все высказывание парамехами, вам даже не понадобится обратная косая черта.

dataFrame = (df0. 
      join(df1, how='outer'). 
      join(df2, how='outer'). 
      join(df3, how='outer')) 
+0

Благодарим вас за ваш собеседник, я не понял, что парамехи будут работать так. Хорошо знать! – Boombat