Moc Pythona tkwi w jego modułach. Programowanie przy użyciu języków wysokiego poziomu często sprowadza się do użyciu gotowych rozwiązań. To bardzo dobrze. Nie tracimy czasu na ponowne wynajdywanie koła i możemy skupić się na rzeczywistym zadaniu. Python idealnie wpisuje się w takie podejście. Niestety implikuje to inny problem. Trzeba wiedzieć którego modułu użyć. Tu czasami mamy coś w stylu klęski urodzaju. Możliwości jest tak wiele, że nie wiadomo co wybrać. Doświadczeni programiści już przeszli przez tą ścieżkę i mają już wachlarz sprawdzonych rozwiązań. Oczywiście moduły jakie używamy w pracy mocno zależą od specyfiki danego projektu. Co innego używać będzie osoba pracująca z Big data, a co innego programista pracujący przy portalach internetowych. Python używany jest już w tylu dziedzinach, że dorobił się już modułu na każdą okazję. Są jednak biblioteki tak sławne i potrzebne, że powinien znać je każdy szanujący programista języka Python. To właśnie o te moduły możesz zostać zapytany podczas rozmowy o pracę. Nie chodzi tu o to żebyś na wyrywki znał wszystkie możliwe funkcje z każdego modułu. Bardziej liczy się wiedza jaką funkcjonalność oferuje każdy z modułów i jakie problemy za jego pomocą możesz rozwiązać. Oto moja lista.

pylint

Jest to moduł służący do statycznej analizy naszego kodu. Innymi słowy pylint skanuje napisany przez nas kod (nie uruchamiając go) i sprawdza go pod kątem błędów. Jeśli nie znasz tego modułu może to oznaczać, że nie dbasz o jakość twojego kodu. Warto zauważyć, że poza dość oczywistymi błędami jakie może znaleźć pylint takimi jak używanie zmiennej, której wcześniej nie stworzyłeś (zwykle powodem takiego problemu jest literówka), czy też źle użytych wcięć, zgłaszane są też bardziej złożone problemy. Pylint może zasugerować Ci użycie funkcji enumerate zamiast iterować się za pomocą rangelen. Zauważy również jeśli twoja metoda mogłaby być metodą statyczną lub w ogóle zasugeruje Ci zmianę danej klasy na zwykłą funkcję. Dla rekrutera sprawa jest prosta. Nie znasz pylint nie dbasz o jakość kodu.

https://www.pylint.org/

pytest

Ten moduł to mój ulubiony. Jest to framework do pisania oraz egzekwowania testów. Najczęściej stosuje się go do testów jednostkowych. Ja zawsze staram się pisać testy do napisanego przez siebie kodu. Z doświadczenia wiem, że w ostatecznym rozrachunku jest to oszczędność czasu. Oczywiście pytest nie jest jedyną opcją jeśli chodzi o testy jednostkowe. Mamy przecież wbudowany w Pythona moduł unittest jednak używanie pytest jet po prostu wygodniejsze. Warto wiedzieć o obydwu opcjach. Warto również dać do zrozumienia rekruterowi, że testy jednostkowe nie są Ci obce. Będzie to też dobra okazja by wspomnieć o TDD.

https://docs.pytest.org/en/latest/

flask

Flask podobnie jak jego największy konkurent Django jest frameworkiem do tworzenia aplikacji webowych. Można zatem zaryzykować stwierdzenie, że rozwiązuje te same problemy. Pewnie wielu by się z tym zgodziło. Flask jest jednak o wiele lżejszy i moim zdaniem łatwiejszy od Django. Nadaje się więc świetnie do mniejszych projektów lub do nauki bo próg wejścia jest niższy niż w Django. Na uwagę zasługuje Flask-RESTful będący rozszerzeniem do Flaska, który pomoże Ci stworzyć api restowe dla twojego programu.

https://flask-restful.readthedocs.io/en/latest/

django

Tego modułu już chyba nie ma po co przedstawiać. Django stało się standardem dla tworzenia aplikacji webowychjęzyku Python. Na rynku są całe firmy, które zbudowały swój potencjał tylko poprzez tworzenie aplikacji w tym frameworku. Jeśli myślisz o pracy jako back-end web developerjęzyku Python bezsprzecznie powinieneś zainteresować się Django.

mypy

Jest to bardzo ciekawy moduł. Dodaje on niejako nową funkcjonalność do samego języka Python. Jak pewnie wiesz Python jest językiem typowanym dynamicznie. Jest to zarazem błogosławieństwem jak i przekleństwem. Mypy daje możliwość sprawdzanie poprawności typów w  naszym programie. Oto prosty przykład prosto ze strony http://mypy-lang.org/

tkinter

Mówisz interface graficzny myślisz Tkinter. Tworzenie desktopowych aplikacjijęzyku Python jest całkiem proste i to właśnie dzięki tej bibliotece. W obecnych czasach aplikacji webowych zwykłe programy z graficznym interfejsem użytkownika troszkę straciły na znaczeniu. Jednak jeśli kiedyś będziesz coś takiego potrzebować śmiało sięgaj po ten moduł.

https://docs.python.org/2/library/tkinter.html

venv

Inaczej virtual environment. Jest to trochę dziwoląg bo nie jest do moduł podobny do innych. Większość przedstawionych w tym wpisie modułów umożliwia nam łatwe dodanie nowej funkcjonalności do naszego programu. Z venvem jest troszkę inaczej. Jest to moduł bardziej związany z dobrymi praktykami oraz samym zarządzaniem projektem. Umożliwia on stworzenie odrębnej przestrzeni dla każdego projektu. Rozwiązuje to problem konfliktów pomiędzy wersjami modułów wymaganych w różnych projektach. Ułatwia również dzielnie się wymaganiami dotyczącymi danego projektu. Jak by na to nie patrzeć to niezależnie od tego jaką aplikację obecnie tworzysz znajomość venev może rozwiązać sporo twoich problemów.

https://docs.python.org/3/library/venv.html

request

Jest to moduł do pracy z protokołem HTTP. Świetnie nadaje się do wczytywania stron www. Za jej pomocą można pracować z zapytaniami POSTGET. Założę się, że każdy programista języka Python chociaż raz korzystał z tego modułu. Ja dzięki niemu automatycznie pobieram rozkład jazdy pociągów. Jest to jeden z tych modułów, który łączy twój kod z resztą świata. Jak to zwykle bywa z Pythonem użycie modułu request jest dość proste, a daje bardzo dużo możliwości i świetnej zabawy.

https://pypi.org/project/requests/

 

Ciekawych i pomocnych modłów jest oczywiście dużo dużo więcej. To właśnie w dostępnych modułach tkwi prawdziwa siła języka Python. Jeśli mam jakiś problem do rozwiązania to pierwsze co robię to research czy przypadkiem ktoś już go nie rozwiązał i udostępnił w formie modułu gotowego do pobrania. Zazwyczaj tak jest. Jeśli twierdzisz, że zapomniałem o jakimś ważnym module to zachęcam do dodanie takiej sugestii w komentarzu.