2012-03-19 1 views
23

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

Во время проверки моего кода 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 

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

+3

Какой PEP 8 вы имеете в виду? [Официальная страница] (http://www.python.org/dev/peps/pep-0008/) не упоминает об этом вообще. –

+0

Выход из '' pep8 --show-pep8'' установлен из PYPI. – seler

ответ

28

W391 является пустым линии, то есть, два последовательных\n с. Конфликтов нет.

+1

Как насчет примера, показанного в pep? Он говорит, что в конце не должно быть '' \ n''. Я предполагаю, что вы имеете в виду '' спам (1) \ n
\ n''. – seler

+13

Он выглядит Linke VIM добавляет '' \ n'' в конец каждого файла, фактически не переходя к следующей строке. Ухоженная! – seler

13

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

 
print 'last line' 


Это неправильно согласно W292:

 
print 'last line' 

Что является правильным является:

 
print 'last line' 

+0

Hrm .. когда у меня есть последняя версия, которая отображается, как у вас есть в vim, и через cat, я получаю предупреждение W391 от синтаксиса. Я не получаю предупреждение, когда у меня есть второй пример. Это ошибка в синтаксисе? – naught101

+2

@ naught101 Vim добавляет финальную новость за кулисами. В этом случае Вим обманывает вас. Есть плагины, чтобы сообщить Vim, чтобы вы не добавили окончательную новую строку, если хотите. –

1

В Windows «\ п 'является разделителем между строками, но в linux' \ n 'является конечным знаком на любой строке. Vim не ошибается добавить '\ n' в конец строк в платформе linux, но после определения os.

Смежные вопросы