192
Rozdział 4.
py.test --pep8 rdzi
Znaczenie komunikatów błędów
Narzędzie
pytest
wraz z wtyczką
pep8
wskazało nam w sumie pięć problemów występujących
w naszym kodzie zapisanym w pliku
vsearch.py.
Pierwszy z nich jest związany z tym, że nie umieściliśmy spacji po znaku
:
podczas dodawania
adnotacji do argumentów funkcji. Błąd ten popełniliśmy w trzech miejscach. Popatrz na
pierwszy komunikat i zwróć uwagę na sposób, w jaki narzędzie
pytest
używa znaku daszka (
^
),
aby wskazać dokładne miejsce występowania problemu.
...:2:25: E231 missing whitespace after ‘:’
def search4vowels(phrase:str) -> set:
^
Tutaj znajduje się
informacja, co jest
nie tak.
Tutaj znajduje się informacja,
gdzie występuje problem.
Przyglądając się pozostałym komunikatom, zauważysz, że błąd ten zrobiliśmy w trzech
miejscach: raz w wierszu drugim oraz dwukrotnie w wierszu siódmym. Problem można łatwo
wyeliminować: wystarczy
dodać pojedynczy znak spacji po każdym wskazanym dwukropku.
Poprawiając wiersz siódmy, możemy od razu pozbyć się problemu wskazywanego przez
kolejny komunikat.
...:7:1: E302 expected 2 blank lines, found 1
def search4letters(phrase:str, letters:str=’aeiou’) -> set:
^
Tutaj znajduje się informacja,
co jest nie tak.
Tutaj znajduje się informacja,
gdzie występuje problem.
Tutaj znajduje się
informacja, co jest
nie tak.
PEP 8 zawiera wytyczną regulującą kwestie związane z tworzeniem funkcji w module, która mówi,
że funkcje najwyższego poziomu oraz definicje klas powinny być rozdzielone dwoma pustymi wierszami.
W przypadku naszego pliku vsearch.py funkcje
search4vowels
i
search4letters
funkcjami
„najwyższego poziomu” i od siebie oddzielone pojedynczym pustym wierszem. Aby spełnić wymogi
stawiane przez dokument PEP 8, powinniśmy tu wstawić
dwa puste wiersze.
Również ten błąd łatwo jest naprawić: wystarczy
wstawić dodatkowy pusty wiersz pomiędzy te dwie funkcje.
Ostatnim z wykrytych problemów jest zbyt długi wiersz tekstu dokumentującego, występującego w wierszu ósmym.
...:8:80: E501 line too long (80 > 79 characters)
”””Zwraca zbiór liter ze zmiennej letters znalezionych w zmiennej phrase.”””
^
Tak przy okazji: zapoznaj
się z wytycznymi
dotyczącymi stylu kodu
Pythona, które zostały
pięknie przedstawione pod
adresem
http://pep8.org/
.
Problem ten można rozwiązać, skracając treść komentarza lub też dzieląc go pomiędzy
dwa wiersze. Ponieważ nie chcemy utrudnić czytania tekstu dokumentującego, wybierzmy
drugie rozwiązanie: wystarczy zatem podzielić komentarz w taki sposób, aby długość jego wiersza
nie przekraczała 79 znaków. Wprowadźmy poprawkę i przetestujmy nasz zmieniony kod
1
.
1
Innymi typowymi problemami, z którymi moglibyśmy się tu spotkać, błędy związane ze spacjami występującymi na końcach
wierszy. Stosując przyjęty przez wydawnictwo Helion styl wcięć kodu o szerokości trzech spacji, otrzymamy też informacje
o niezgodności z zalecanym dla kodu Pythona standardem wcięć o szerokości czterech spacji
przyp. tłum.
jesteś tutaj
193
Ponowne użycie kodu
Potwierdzanie zgodności naszego kodu
ze standardem PEP 8
W wyniku wprowadzenia niezbędnych zmian w kodzie Pythona znajdującym się w pliku
vsearch.py ma on postać przedstawioną poniżej.
def search4vowels(phrase: str) -> set:
”””Zwraca samogłoski znalezione we frazie podanej jako argument.”””
vowels = set(‘aeiou’)
return vowels.intersection(set(phrase))
def search4letters(phrase: str, letters: str=’aeiou’) -> set:
”””Zwraca zbiór liter ze zmiennej letters znalezionych
w zmiennej phrase.”””
return set(letters).intersection(set(phrase))
Wersja modułu
vsearch.py jest zgodna
ze standardem PEP 8.
Kolor zielony oznacza, że
jest dobrze. W tym kodzie
nie występują żadne
niezgodności z wytycznymi
PEP 8 :)
To już koniec
naszej dygresji
na temat
narzędzia pytest.
Do zobaczenia
w rozdziale 5.!
Jeśli tę wersję kodu sprawdzimy za pomocą wtyczki
pep8
do narzędzia
pytest
,
dane wyjściowe na ekranie potwierdzą, że nie mamy już żadnych problemów ze
zgodnością z wytycznymi PEP 8. Poniżej możesz zobaczyć, co ujrzeliśmy na naszym
komputerze (działającym pod kontrolą systemu operacyjnego
Windows).
Zgodność ze standardem PEP 8 jest rzeczą dobrą
Jeśli patrzysz na to wszystko, dziwiąc się trochę, o co ten cały szum (zwłaszcza że chodziło tu właściwie
tylko o kilka białych znaków), zastanów się dobrze nad powodami, dla których miałbyś chcieć zachować
zgodność z wytycznymi zebranymi w dokumencie PEP 8. Stwierdza się w nim, że czytelność ma znaczenie
oraz że kod jest o wiele częściej czytany niż pisany. Z faktu, że Twój kod spełnia wymagania stawiane przez
standardowy styl kodowania, wynika, czyta się go łatwiej, ponieważ „wygląda” on tak jak wszystko to,
z czym programista przeglądający Twój kod miał do tej pory do czynienia. Spójność jest dobrą rzeczą.
Od tego miejsca (i w takim stopniu, w jakim jest to praktyczne) cały kod w tej książce będzie zgodny z wytycznymi
zawartymi w dokumencie PEP 8. Powinieneś zapewnić, aby Twój kod również spełniał stawiane w nim wymagania.

Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.