Python - co to jest i do czego można go użyć?

Co to jest Python?

Python logo

Python to dynamiczny obiektowy język programistyczny, który jest łatwy w nauce i można go wykorzystać do tworzenia różnorakiego oprogramowania. Python rozprowadzany jest na otwartej licencji umożliwiającej zastosowanie go do zamkniętych komercyjnych projektów. W sieci dostępnych jest wiele przewodników, jak i dodatkowych bibliotek, czy narzędzi ułatwiających programowanie w tym języku. Python jest aktywnie rozwijany i posiada szerokie grono użytkowników na całym świecie i jest jednym z najpopularniejszych języków według różnego rodzaju metryk mierzących ilość tworzonych projektów, bibliotek i preferencji programistów.

Oto przykładowy kod Pythona:

print('Witaj świecie!')

fraza = 'Witaj w Pythonie'

for litera in fraza:
    print(litera)

Co po wykonaniu zwróci:

Witaj świecie!

W
i
t
a
j
 
w
 
P
y
t
h
o
n
i
e

Możesz sprawdzić to sam w widżecie Trinket zdolnym wykonać kod Pythona online:

Kto tego używa?

nasa

Google, Yahoo, Nokia, IBM czy NASA wykorzystują Pythona w swoich wartych wiele milionów, czy też miliardów dolarów aplikacjach i projektach. Microsoft jak i Apple oferują pełne wsparcie dla Pythona w swoich systemach operacyjnych i platformach programistycznych. Wiele stron internetowych takich jak YouTube czy swego czasu Grono.net napisane jest w Pythonie.

NASA wykorzystuje Pythona w swoich aplikacjach od wielu lat. Jednym z dobrze opisanych wdrożeń jest zastosowanie aplikacji napisanych w Pythonie do zarządzania kontrolą startową wahadłowców.

youtube

YouTube - popularny serwis z klipami wideo jest w większości napisany w Pythonie. Twórcy serwisu (wykupionego przez Google) podkreślali elastyczność jaką oferuje Python, a także szybkie implementowanie nowych funkcjonalności poprzez czytelny kod, który łatwo rozszerzać i aktualizować. Google używa Pythona w wielu swoich aplikacjach i usługach jak i oferuje Pythonowe biblioteki do wielu swoich usług i API.

Python jest też wykorzystywany przez wiele lokalnych firm i nie trzeba pracować w Google żeby móc wykorzystywać Pythona. Aplikacje internetowe, przetwarzanie danych to teraz spore domeny tego języka.

Oferty dla programistów Pythona

Nie brakuje też ofert pracy dla Programistów Pythona w lokalnych firmach

Gdzie działa Python?

Aplikacje napisane w Pythonie działają pod wieloma systemami takimi jak Windows, Linux/Unix czy MacOS. Z pewnymi ograniczeniami dostępny jest na Androida. Dostępne są także implementacje Pythona w Javie (Jython) i .NET (IronPython) działające wszędzie tam, gdzie dostępne są te platformy. MicroPython to specjalna minimalistyczna implementacja Pythona na mikrokontrolery pozwalająca w łatwy sposób skryptować elektronikę (mikrokontroler - coś znacznie prostszego niż procesor w twoim smartphone czy komputerze).

Każda implementacja Pythona implementuje tą samą składnię i część lub całość biblioteki standardowej Pythona. Oznacza to że proste skrypty Pythona będą działały na dowolnej implementacji (choć dość szybko można natrafić na jakieś różnice lub ograniczenia).

  • Python - główna implementacja Pythona
  • Jython - implementacja w Javie pozwalająca na wykorzystanie klas Javy
  • IronPython - implementacja w .NET i zintegrowana z tą platformą
  • MicroPython - implementacja na mikrokontrolery
  • circuitpython - MicroPython w wersji bardziej przyjaznej do nauki programowania i sterowania elektroniką
  • Zerynth - platforma do skryptowania elektroniki oparta o specjalizowaną implementację Pythona

Do programowania w Pythonie na komputerze praktycznie zawsze będziesz używał domyślnej implementacji. Jython i IronPython są dość niszowymi projektami dla osób pracujących na platformach Javowych i .NET jako uzupełnienie ich zbioru narzędzi i języków skryptowych. W przypadku elektroniki na np. Raspberry Pi używać będziesz zwykłego Pythona, ale na wybranych mikrokontrolerach będzie to CircuitPython (MicroPython) czy Zerynth.

Do czego można użyć Pythona?

Pythona można wykorzystać do tworzenia serwisów internetowych, aplikacji desktopowych działających na komputerach użytkowników, wliczając w to także gry. Można także wykorzystać Pythona w aplikacjach sieciowych, czy skryptach np. generujących zestawienia i raporty. Jest też popularny wśród naukowców i osób zajmujących się przetwarzaniem danych czy uczeniem maszynowym. Jest to wszechstronny język programistyczny, lecz też nie jest do wszystkiego.

django logo

Tworzenie dynamicznych stron internetowych jest bardzo łatwe i efektywne dzięki bardzo dobrym frameworkom takim jak Django, Flask, czy kombajnowi aplikacji Zope/Plone/Pyramid. Python znalazł zastosowanie przy efektywnym i szybkim tworzeniu nowoczesnych stron internetowych bogatych w funkcjonalności. Dzięki wszechstronnej kolekcji modułów i bibliotek, łatwości testowania i czytelności kodu serwisy napisane w Pythonie mogą osiągnąć ten sam stan i zestaw funkcjonalności szybciej czy też taniej niż pozwalały by na to języki i platformy stosowane wcześniej.

google app engine logo

Platforma Google App Engine dla rozproszonego hostingu aplikacji internetowy oparta została o Pythona (jak i inne języki) i oferuje aplikacjom internetowym taką samą skalowalność, jaką posiadają aplikacje i usługi tej firmy. Bez ręcznej administracji serwerami i z łatwiejszą możliwością rozszerzania infrastruktury i skalowania. Chmura automatycznie skaluje się do generowanego na stronie ruchu. App Engine ma pewne ograniczenia co do dostępnych technologii, czy baz danych, ale Google Cloud Hosting oparty o Kubernetesa i Dockera już nie (choć użytkowanie tej platformy wymaga nieco wiedzy jak ona działa i jak nią zarządzać, konfigurować).

facebook logo

Usługi i serwisy społecznościowe to obecnie podstawa dla wielu serwisów www. Za pomocą Pythona bezproblemowo można wykorzystać API/usługi serwisów takich jak Twitter, Facebook, aplikacji Google (Maps, Docs i innych), NASA, YouTube, serwisów pogodowych, giełdowych i wielu wielu innych. Biblioteki implementujące logowanie OAuth na potrzeby Django, Flaska czy innego frameworka pozwolą nam dodać logowanie za pomocą serwisów społecznościowych na naszej stronie. Interfejsy API zwracające dane pozwolą nam pobierać i przetwarzać różnego rodzaju dane - np. bieżąca pogoda, dane statystyczne, finansowe itd.

Aplikacje desktopowe działające pod kluczowymi systemami operacyjnymi (MS Windows, MacOS, Linux) można bez problemu pisać także w Pythonie za pomocą bibliotek takich jak PyQt5, PyGTK, wxPython, czy wbudowanej biblioteki tk_inter. Za pomocą aplikacji py2exe można stworzyć gotowe aplikacje (exe) dla systemów MS Windows, a za pomocą py2app gotowe aplikacje dla MacOS. Trzeba jednak zaznaczyć iż aplikacje desktopowe nie są aż tak często pisane w Pythonie.

pyqt4 example

Skrypty i aplikacje Pythonowe przydają się także w zastosowaniach naukowych, czy finansowych gdzie potrzebne jest przetwarzanie danych i generowanie wykresów, zestawiań, plików PDF, arkuszy Excela i temu podobnych. Za pomocą Reportlab wygenerujemy pliki PDF i sformatujemy wszelakie raporty w nim zawarte. Matplotlib oferuje generowanie wykresów różnego typu. Scipy oferuje implementacje różnych algorytmów do skomplikowanych obliczeń w Pythonie. Pillow zapewnia obróbkę grafik (jak skalowanie, wyostrzanie, obracanie itd.), a xlwt i xlrt zapis i odczyt arkuszy Excela. Do tego potężne biblioteki obliczeniowe jak numpy.

matplotlib netcdf

Gry nie są silną stroną Pythona - w tym języku można skryptować niektóre silniki gier żeby stworzyć działającą i kompletną grę, niemniej Python nie jest wspierany przez najpopularniejsze silniki. Także skryptowanie silników gier to tylko fragment tworzenia gry, więc jeżeli chcesz specjalizować się w tworzeniu gier to zapoznasz się z różnymi narzędziami i językami. Nie każdy programista tworzy silniki gier w C czy skryptuje w języku skryptowym niemniej duże zaawansowanie gier wymusza specjalizacje i otwartość na różnorakie technologie, narzędzia i kompetencje.

toee python game
Świątynia Pierwotnego Zła - jedna z gier skryptowanych Pythonem.

The Sims 4 - obsługa modów z wykorzystanie Pythona, World of Tanks - Python jako język skryptowy logiki gry od strony użytkowników, EVE Online - klient i serwer tworzony z wykorzystaniem Stackless Python.

Co do aplikacji mobilnych to Python nie jest dobrą platformą do ich tworzenia. Istnieją projekty takie jak QPython i Kivy, lecz nie oferują takich możliwości i jakości jak natywne platformy do tworzenia aplikacji mobilnych na Androida i iOS. Nawet np. React Native, który służy do tworzenia jednej aplikacji na obie platformy jest bardziej dojrzałą (i lepiej finansowaną) platformą, przez co część popularnych aplikacji mobilnych jest napisana za jego pomocą (choć i React Native może natrafić na ograniczenia, których natywne platformy mieć nie będą).

Poręczna może być też lista Awesome Python listująca biblioteki i narzędzia do konkretnych zadań, np. obróbki grafik, wideo, przetwarzania danych itd.

Jak zacząć z Pythonem?

W sieci jest wiele poradników i kursów. Nawet mam kilka na mojej stronie, niemniej są świetne organizacje i ludzie skupiający się na tworzeniu i utrzymywaniu pełnych kursów dla początkujących. Gorąco polecam stosowanie ich i unikanie tych bardziej podejrzanych, które nie są polecane przez doświadczonych programistów a pierwsze co robią to o subskrypcję, lajka, czy podanie adresu email.

Dostępne są też płatne kursy online na popularnych serwisach z kursami tego typu. Firmy takie jak CodersLab oferują płatne kursy offline z bezpośrednim kontaktem z prowadzącym kurs. Mogą, ale nie muszą być lepsze od dobrych darmowych kursów. CodersLab pozwala wielu osobom przebranżowić się na początkującego programistę (kurs nie jest jednak tani), niemniej sam kurs to za mało by wskoczyć na dobrą posadę programisty - trzeba realnie patrzeć na rok czy dwa samodzielnego uczenia się, tworzenia prostych projektów czy też pracy jako junior developer, w firmie, która szkoli programistów (nie każda to robi czy jest w stanie). Po takim wprowadzeniu można już pracować z lepszymi stawkami i mieć większą stabilność zatrudnienia lecz trzeba mieć w głowie że programista nigdy nie przestaje się uczyć. Zawsze jest coś do usprawnienia, zawsze coś można zrobić lepiej albo zawsze można poznać nową technologię by poszerzyć swoje kompetencje.

Pełne kursy Pythona:

RkBlog

Podstawy Pythona, 5 August 2009, Piotr Maliński

Comment article
RkBlog main page Search RSS Contact