Дополнительные пробелы для выравнивания линий продолжения - PullRequest
0 голосов
/ 18 октября 2018

Я начал использовать Flake8 для проверки своего кода на Python, но единственное сообщение об ошибке / предупреждении, которое он всегда дает мне, это, на мой взгляд, боль при сортировке - это «строка продолжения над / под отступом».

Flake8хочет, чтобы линия продолжения выровнялась точно по стартовой скобкеТаким образом, в приведенном ниже примере Flake8 не понравятся первые два, но понравится третье: (»= 4 пробела, · = один пробел)

let_us_pass.some_function(with_a_lot_of=['strings'], or_other_arguments,
»   »   »   »   »   »   and_another)

let_us_pass.some_function(with_a_lot_of=['strings'], or_other_arguments,
»   »   »   »   »   »   »   and_another)

let_us_pass.some_function(with_a_lot_of=['strings'], or_other_arguments,
»   »   »   »   »   »   ··and_another)

Таким образом, Flake8 не жалуется на смешивание 4-пространственные блоки и одиночные пробелы.
Все, что я могу найти в PEP8, - это комментарий в примере: # Hanging indents *may* be indented to other than 4 spaces.

Означает ли это, что его осуждают?Должен ли я придерживаться очистки всех предупреждений Flake8 (и смешивая числа пробелов) или жить с предупреждениями, чтобы сохранить чистоту в 4-х местах.

1 Ответ

0 голосов
/ 18 октября 2018

Цитирование из сноски на соответствующей странице PEP8 :

Висячие отступы - это стиль набора текста, в котором все строки в абзаце с отступом, кроме первой строки.В контексте Python этот термин используется для описания стиля, в котором открывающая скобка оператора в скобках является последним непробельным символом строки, а последующие строки имеют отступ до закрывающей скобки.

# Hanging indents *may* be indented to other than 4 spaces.
foo = long_function_name(
  var_one, var_two,
  var_three, var_four)

Это не тот же случай, что и в вашем примере, поскольку у вас есть аргументы в первой строке.PEP8 утверждает, что вы должны держать аргументы функции вертикально выровненными, поэтому Flake8 здесь верен.Не беспокойтесь о «поддержании чистоты в 4 пространствах», если это нарушит другие правила PEP8.

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

# More indentation included to distinguish this from the rest.
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

# Hanging indents should add a level.
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)
...