Подтвердить что ты не робот

PEP8: конфликт между W292 и W391

Насколько я знаю в unix, хорошая практика всегда иметь пустую строку в конце файла - или, говоря словами: каждая строка должна заканчиваться на \n.

Проверяя код Python на PEP8, я заметил, что он также указывает, что в конце файла должно быть \n:

W292 no newline at end of file
    JCR: The last line should have a newline.

Что странно, он конфликтует с W391:

W391 blank line at end of file
    JCR: Trailing blank lines are superfluous.

    Okay: spam(1)
    W391: spam(1)\n

Как это должно быть? Должен ли я иметь пустую строку в конце файла или нет?

4b9b3361

Ответ 1

W391 - это строка blank, то есть два последовательных \n s. Не существует конфликта.

Ответ 2

Это то, о чем говорит W391:

print 'last line'


Это неверно в соответствии с W292:

print 'last line'

Что правильно:

print 'last line'

Ответ 3

В Windows\n - разделитель между строками, а в Linux\n - знак окончания на любой строке. Vim не сделал ничего плохого, чтобы добавить '\n' в конец строки на платформе Linux, но следуя определению ОС.