Jak automatycznie formatować swój kod Pythona za pomocą czarnego

Pisanie kodu w Pythonie to jedno, a pisanie kodu w dobrym formacie to drugie. Młodsi programiści często koncentrują się na upewnieniu się, że ich kod działa i zapominają o poprawnym formatowaniu kodu po drodze.

Jeśli napiszesz mały program (zawierający 1000 linii kodu), prawdopodobnie możesz sobie poradzić bez formatowania kodu.

Jednak w miarę jak programy stają się coraz bardziej złożone, coraz trudniej je zrozumieć. W pewnym momencie (około 15 000 linii kodu) zrozumienie kodu, który sam napisałeś, staje się trudniejsze.

Różnica między pracą nad dobrze sformatowanym kodem a pracą nad źle sformatowanym kodem jest jak różnica między życiem w pałacu a życiem w brudnym domu.

Dlaczego formatowanie kodu w Pythonie jest ważne

Czytelność

Sformatowanie kodu pomoże Ci efektywnie czytać kod . Wygląda na bardziej zorganizowaną, a kiedy ktoś spojrzy na Twój kod, zrobi dobre wrażenie.

Pomoże w twoich wywiadach z kodowaniem

Kiedy jesteś na wywiadzie z kodowaniem, czasami ankieterzy będą się przejmować, czy poprawnie formatujesz swój kod. Jeśli zapomnisz o tym formatowaniu, możesz stracić perspektywy pracy tylko z powodu źle sformatowanego kodu.

Wsparcie zespołu

Formatowanie kodu staje się ważniejsze podczas pracy w zespole . Kilka osób prawdopodobnie będzie pracować nad tym samym projektem oprogramowania, a napisany kod musi być zrozumiały dla członków zespołu. W przeciwnym razie współpraca staje się trudniejsza.

Ułatwia wykrycie błędów

Źle sformatowany kod może naprawdę utrudnić wykrycie błędów, a nawet pracę nad programem. Po prostu strasznie się na to patrzy. To obraza twoich oczu.

Pylint i Flake8

Większość programistów Pythona lubi używać Pylint lub Flake8 do sprawdzania kodu pod kątem błędów i wskazówek dotyczących stylu.

Pylint to narzędzie sprawdzające błędy w Pythonie. Próbuje wymusić standard kodowania i szuka zapachów kodu. Może również szukać pewnych błędów typu, może zalecać sugestie dotyczące refaktoryzacji poszczególnych bloków i może oferować szczegółowe informacje o złożoności kodu.

Flake8 to biblioteka Pythona, która zawiera PyFlakes , pycodestyle i skrypt McCabe Neda Batcheldera . Jest to świetny zestaw narzędzi do sprawdzania bazy kodu pod kątem stylu kodowania (PEP8) , błędów programowania, takich jak „biblioteka zaimportowana, ale nieużywana”, „niezdefiniowana nazwa” i kod, który nie jest wcięty.

Problem polega na tym, że te narzędzia zgłaszają tylko problemy, które identyfikują w kodzie źródłowym, i pozostawiają obciążenie programistom Pythona, aby je naprawić!

Ale co by było, gdybyśmy mieli narzędzie, które mogłoby jednocześnie zidentyfikować i rozwiązać problem? Czarny to narzędzie, które pozwala na identyfikację błędów i jednoczesne formatowanie kodu Pythona . Dzięki temu jesteś bardziej produktywny.

Wprowadzenie do czerni

Z projektu README:

Korzystając z Black , zgadzasz się scedować kontrolę nad szczegółami ręcznego formatowania. W zamian czarny daje prędkość, determinizm i wolność od pikodestylowego dokuczania formatowaniu. Zaoszczędzisz czas i energię psychiczną na ważniejsze sprawy.

Czarny może ponownie sformatować cały plik zgodnie ze stylem kodu Czarny. Pomaga mózgowi skoncentrować się na problemie, który chcesz rozwiązać i kodować rozwiązania, zamiast rozpraszać się strukturą kodu i drobnymi różnicami stylistycznymi.

Zobaczmy więc, jak go używać.

Zainstaluj czarny

Czarny można zainstalować, uruchamiając pip install black. Do działania wymaga Pythona 3.6.0+. Po zainstalowaniu Black będziesz mieć nowe narzędzie wiersza poleceń o nazwie black dostępne w Twojej powłoce i możesz zacząć!

Aby od razu rozpocząć korzystanie z rozsądnych ustawień domyślnych, wybierz plik Pythona, który chcesz sformatować, a następnie wpisz czarny filename.py w terminalu. Wtedy Black sformatuje twój plik Pythona.

Teraz zobaczymy, w czym może nam pomóc czarny.

Sformatuj pojedynczy plik

Spójrzmy na ten prosty przykład: oto moje dwie funkcje Pythona w moim pliku Pythona o nazwie sample_code.py.

Możesz użyć black sample_code.pyw terminalu, aby zmienić format. Po uruchomieniu Black zobaczysz następujący wynik:

Następnie możesz otworzyć sample_code.py, aby zobaczyć sformatowany kod Pythona:

Kod Pythona jest teraz sformatowany i bardziej czytelny.

Formatuj wiele plików

Aby sformatować więcej niż jeden plik Pythona, napisz black folder_name/w terminalu.

Trzy pliki Pythona w folderze o nazwie python_with_black zostały ponownie sformatowane.

Sprawdzanie plików pod kątem formatowania

Jeśli nie chcesz, aby czarny zmieniał twój plik, ale chcesz wiedzieć, czy czarny uważa, że ​​plik powinien zostać zmieniony, możesz użyć jednego z następujących poleceń:

black --check .: Spowoduje to sprawdzenie, które pliki Pythona można sformatować w bieżącym folderze (ale w rzeczywistości nie modyfikuje plików Pythona).

black --check --diff file_name.py : Pokazuje, co należy zrobić z plikiem, ale nie modyfikuje pliku.

Zmień liczbę znaków w linii

Zauważ, że czarny domyślnie ma 88 znaków długości linii, ale możesz to zmienić za pomocą opcji „-l” lub „- -line-length”.

Na przykład, aby przejść do 60 znaków: black -l 60 python_file.py.

Czarny notatnik Jupyter

Użytkownicy notebooków Jupyter mogą nadal automatycznie formatować kod Pythona za pomocą tego prostego rozszerzenia o nazwie Jupyter Black. To rozszerzenie przeformatowuje / upiększa kod w komórce kodu notebooka na czarno.

Rozszerzenie Jupyter Black zapewnia

  • Przycisk paska narzędzi.
  • Skrót klawiaturowy do ponownego formatowania bieżącej komórki kodu (domyślnie: Ctrl-B).
  • Skrót klawiaturowy do ponownego formatowania całych komórek kodu (domyślnie: Ctrl-Shift-B).

Zainstaluj Jupyter Black

Najpierw upewnij się, że masz zainstalowane jupyter-contrib-nbextensions i czarny, a następnie uruchom następujące polecenia.

jupyter nbextension install //github.com/drillan/jupyter-black/archive/master.zip — user

Następnie włącz rozszerzenie, uruchamiając:

jupyter nbextension enable jupyter-black-master/jupyter-black 

Teraz możesz rozpocząć formatowanie kodu Pythona w każdej komórce notatnika.

Najpierw wybierz komórkę notatnika, którą chcesz sformatować kod Pythona, a następnie kliknij przycisk rozszerzenia o nazwie Czarny.

Następnie kliknij przycisk Jupyter Black:

Integracja edytora

Możesz zintegrować Black ze swoimi ulubionymi edytorami. Obecnie Black obsługuje PyCharm / IntelliJ IDEA, Wing IDE, Vim, Visual Studio Code, Sublime Text 3, Atom / Nuclide, Kakoune i Thonny. Postępuj zgodnie z instrukcjami tutaj, aby zintegrować Black ze swoim ulubionym edytorem.

Jeśli chcesz dowiedzieć się więcej o Black, polecam obejrzenie wykładu Łukasza Langa na PyCon 2019.

Jeśli nauczyłeś się czegoś nowego lub podobał Ci się ten artykuł, udostępnij go, aby inni mogli go zobaczyć. Do zobaczenia w następnym poście! Można się ze mną również skontaktować na Twitterze @Davis_McDavid.