2012-03-19 16 views
23

O ile wiem w systemie Unix, dobrą praktyką jest zawsze mieć pustą linię na końcu pliku - lub mówiąc inaczej: każda linia powinna kończyć się na \n.PEP8: konflikt między W292 i W391

Podczas sprawdzania mojego kodu Pythona z PEP8 zauważyłem, że to również, że nie powinno być \n na końcu pliku:

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

Co dziwne, jest ono sprzeczne z W391:

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

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

Jak powinno być? Czy powinienem mieć pustą linię na końcu pliku, czy nie?

+3

Których PEP 8 dotyczy? Oficjalna strona (http://www.python.org/dev/peps/pep-0008/) w ogóle o tym nie wspomina. –

+0

dane wyjściowe pochodzą z '' pep8 --show-pep8'' installedy od PYPI. – seler

Odpowiedz

28

W391 jest puste linii, to jest dwa kolejne\n S. Nie ma konfliktu.

+1

Co z przykładem pokazanym w pep? Mówi, że nie powinno być żadnego '' \ n'' na końcu. Domyślam się, że masz na myśli '' spam (1) \ n
\ n''. – seler

+13

Wygląda na linke VIM dodaje '' \ n'' na końcu każdego pliku bez przechodzenia do następnej linii. Schludny! – seler

13

To właśnie W391 mówi o:

 
print 'last line' 


To jest złe według W292:

 
print 'last line' 

Jaka jest prawidłowa brzmi:

 
print 'last line' 

+0

Hrm .. kiedy mam ostatnią wersję, która wyświetla się tak jak w vimie, i przez kota, otrzymuję ostrzeżenie W391 od syntastycznego. Nie dostaję ostrzeżenia, gdy mam drugi przykład. Czy to błąd w syntaktyce? – naught101

+2

@ naught101 Vim dodaje ostatni występ za kulisami. W tym przypadku Vim cię oszukuje. Istnieją wtyczki informujące Vima, aby nie dodawał ostatniego znaku nowej linii, jeśli wolisz. –

1

w oknach „\ n "jest separatorem między wierszami, ale w linuksie \ n 'jest znakiem kończącym na dowolnej linii. Vim nie zepsuje dodawania '\ n' na końcu linii na platformie Linux, ale po definicji OS.

Powiązane problemy