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ą range i len. 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.
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 webowych w ję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 developer w ję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 aplikacji w ję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 POST i GET. 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.
Ciekawe zabranie najważniejszych modułów od razu widać co na starcie trzeba wiedzieć 🙂 Jedyne pytanie mam venv vs virtualenvwrapper czy miałeś jakieś doświadczenia?
Nie do tej pory używałem venv albo anakondę. Obydwa podejścia chodź diametralnie różne rozwiązywały ten sam problem. virtualenvwrappera nie próbowałem, ale poczytam 🙂
Ja interesuje sie Game Dev w Python wiec dodal bym tutaj biblioteki Turtle oraz PyGame 😁👍.
Troche ucze sie teraz tKinter oraz Django. Zauwazylem ze dosc prosto tworzy sie aplikacje okienkowe w Python za pomoca tKinter.
Django jest juz trudniejsze 🤔.
Pozdrawiam.