Co to jest Python? Potężne, intuicyjne programowanie

Pochodzący z 1991 roku język programowania Python był uważany za wypełniacz luk, sposób na pisanie skryptów, które „automatyzują nudne rzeczy” (jak ujęła to jedna z popularnych książek o nauce Pythona) lub na szybkie tworzenie prototypów aplikacji, które zostaną wdrożone w innych językach .

Jednak w ciągu ostatnich kilku lat Python stał się obywatelem pierwszej klasy w dziedzinie tworzenia nowoczesnego oprogramowania, zarządzania infrastrukturą i analizy danych. Nie jest już językiem narzędzi zaplecza, ale główną siłą w tworzeniu aplikacji internetowych i zarządzaniu systemami, a także kluczowym czynnikiem napędzającym eksplozję analizy dużych zbiorów danych i inteligencji maszynowej.

Powiązany film: Jak Python ułatwia programowanie

Idealny dla IT, Python upraszcza wiele rodzajów pracy, od automatyzacji systemu po pracę w najnowocześniejszych dziedzinach, takich jak uczenie maszynowe.

Kluczowe zalety Pythona 

Sukces Pythona obraca się wokół kilku zalet, które zapewnia zarówno początkującym, jak i ekspertom.

Python jest łatwy do nauczenia i używania

Liczba funkcji samego języka jest niewielka i wymaga stosunkowo niewielkiej ilości czasu lub wysiłku, aby stworzyć pierwsze programy. Składnia Pythona została zaprojektowana tak, aby była czytelna i prosta. Ta prostota sprawia, że ​​Python jest idealnym językiem do nauczania i pozwala nowicjuszom szybko go opanować. W rezultacie programiści spędzają więcej czasu na myśleniu o problemie, który próbują rozwiązać, a mniej na myśleniu o złożoności języka lub rozszyfrowywaniu kodu pozostawionego przez innych.

Python jest szeroko stosowany i obsługiwany

Python jest zarówno popularny, jak i szeroko stosowany, o czym świadczą wysokie pozycje w ankietach, takich jak Tiobe Index, oraz duża liczba projektów GitHub korzystających z Pythona. Python działa na każdym głównym systemie operacyjnym i platformie, a także na większości mniejszych. Wiele głównych bibliotek i usług opartych na API ma powiązania lub opakowania Pythona, co pozwala Pythonowi swobodnie łączyć się z tymi usługami lub bezpośrednio korzystać z tych bibliotek. 

Python nie jest językiem „zabawkowym”

Mimo że skrypty i automatyzacja obejmują dużą część przypadków użycia Pythona (więcej o tym później), Python jest również używany do tworzenia oprogramowania o profesjonalnej jakości, zarówno jako samodzielne aplikacje, jak i usługi internetowe. Python może nie jest najszybszym językiem, ale to, czego brakuje mu w szybkości, nadrabia wszechstronnością.

Python idzie do przodu

Każda wersja języka Python dodaje przydatne nowe funkcje, aby dotrzymać kroku nowoczesnym praktykom tworzenia oprogramowania. Na przykład operacje asynchroniczne i procedury są teraz standardowymi częściami języka, co ułatwia pisanie aplikacji Python, które wykonują przetwarzanie współbieżne.

Do czego służy Python

Najbardziej podstawowym przykładem użycia Pythona jest język skryptów i automatyzacji. Python to nie tylko zamiennik skryptów powłoki lub plików wsadowych; jest również używany do automatyzacji interakcji z przeglądarkami internetowymi lub GUI aplikacji lub do udostępniania i konfiguracji systemu w narzędziach takich jak Ansible i Salt. Ale skrypty i automatyzacja to tylko wierzchołek góry lodowej w Pythonie.

G Ó programowania aplikacji z Python

W języku Python można tworzyć zarówno aplikacje z interfejsem wiersza polecenia, jak i międzyplatformowe aplikacje GUI, a następnie wdrażać je jako samodzielne pliki wykonywalne. Python nie ma natywnej możliwości generowania samodzielnego pliku binarnego ze skryptu, ale można to osiągnąć za pomocą pakietów innych firm, takich jak cx_Freeze i PyInstaller.

Nauka o danych i uczenie maszynowe w Pythonie

Zaawansowana analiza danych stała się jednym z najszybciej zmieniających się obszarów IT i jednym z najważniejszych przypadków użycia Pythona. Zdecydowana większość bibliotek używanych do nauki o danych lub uczenia maszynowego ma interfejsy Python, dzięki czemu język ten jest najpopularniejszym interfejsem poleceń wysokiego poziomu dla bibliotek uczenia maszynowego i innych algorytmów numerycznych.

Usługi internetowe i interfejsy API RESTful w Pythonie

Natywne biblioteki Pythona i platformy internetowe innych firm zapewniają szybkie i wygodne sposoby tworzenia wszystkiego, od prostych interfejsów API REST w kilku wierszach kodu po pełnowymiarowe witryny oparte na danych. Najnowsze wersje Pythona mają silne wsparcie dla operacji asynchronicznych, pozwalając witrynom obsługiwać dziesiątki tysięcy żądań na sekundę za pomocą odpowiednich bibliotek.

Metaprogramowanie i generowanie kodu w Pythonie

W Pythonie wszystko w języku jest obiektem, łącznie z modułami i bibliotekami Pythona. Dzięki temu Python działa jako wysoce wydajny generator kodu, umożliwiając pisanie aplikacji, które manipulują własnymi funkcjami i mają taką rozszerzalność, która byłaby trudna lub niemożliwa do wykonania w innych językach.

Python może być również używany do sterowania systemami generowania kodu, takimi jak LLVM, w celu wydajnego tworzenia kodu w innych językach.

„Kod kleju” w Pythonie

Python jest często opisywany jako „język kleju”, co oznacza, że ​​umożliwia współdziałanie różnych kodów (zwykle bibliotek z interfejsami języka C). Jego zastosowanie w nauce o danych i uczeniu maszynowym jest w tym duchu, ale to tylko jedno wcielenie ogólnej idei. Jeśli masz aplikacje lub domeny programów, które chcesz połączyć, ale nie możesz rozmawiać ze sobą bezpośrednio, możesz użyć Pythona do ich połączenia.

Gdzie Python nie spełnia wymagań

Warto również zwrócić uwagę na rodzaje zadań, do których Python nie nadaje się dobrze.

Python jest językiem wysokiego poziomu, więc nie nadaje się do programowania na poziomie systemu - sterowniki urządzeń lub jądra systemu operacyjnego nie wchodzą w grę.

Nie jest to również idealne rozwiązanie w sytuacjach wymagających samodzielnych plików binarnych dla wielu platform . Możesz zbudować samodzielną aplikację Python dla Windows, MacOS i Linux, ale nie elegancko lub prosto.

Wreszcie, Python nie jest najlepszym wyborem, gdy szybkość jest absolutnym priorytetem w każdym aspekcie aplikacji. W tym celu lepiej jest używać C / C ++ lub innego języka tego kalibru.

Jak Python ułatwia programowanie

Składnia Pythona ma być czytelna i czysta, bez udawania. Standardowy „hello world” w Pythonie 3.x to nic innego jak:

print („Witaj świecie!”)

Python zapewnia wiele elementów składniowych do zwięzłego wyrażania wielu typowych przepływów programów. Rozważmy przykładowy program do wczytywania wierszy z pliku tekstowego do obiektu listy, usuwając po drodze każdy wiersz kończący znak nowej linii:

z open („myfile.txt”) jako my_file:

    file_lines = [x.rstrip ('\ n') for x in my_file]

with/asKonstrukcja jest kierownik kontekst , który zapewnia skuteczną drogę do utworzenia wystąpienia obiektu dla bloku kodu, a następnie rozporządzania nim poza tym bloku. W tym przypadku obiekt jest my_filetworzony za pomocą open() funkcji. Zajmuje to miejsce kilku wierszy standardowego pliku, aby otworzyć plik, odczytać z niego poszczególne wiersze, a następnie zamknąć.

[x … for x in my_file]Budowa jest inna idiosyncrasy Python, lista zrozumieniem . Pozwala na iterację elementu, który zawiera inne elementy (tutaj my_filei zawarte w nim wiersze) i pozwala na xprzetworzenie każdego iterowanego elementu (to znaczy każdego ) i automatyczne dołączenie do listy.

Ty mógł napisać coś takiego jako formalny for… pętli w Pythonie, podobnie, jak w innym języku. Chodzi o to, że Python ma sposób na ekonomiczne wyrażanie rzeczy, takich jak pętle, które iterują po wielu obiektach i wykonują prostą operację na każdym elemencie w pętli, lub pracują z rzeczami, które wymagają jawnego tworzenia instancji i usuwania.

Konstrukcje takie jak ta pozwalają programistom Pythona zrównoważyć zwięzłość i czytelność.

Inne funkcje języka Python mają uzupełniać typowe przypadki użycia. Większość nowoczesnych typów obiektów - na przykład łańcuchy znaków Unicode - jest wbudowana bezpośrednio w język. Struktury danych - takie jak listy, słowniki (tj. Hasmapy lub magazyny wartości kluczy), krotki (do przechowywania niezmiennych kolekcji obiektów) i zestawy (do przechowywania kolekcji unikatowych obiektów) - są dostępne jako elementy standardowe.

Python 2 kontra Python 3

Python jest dostępny w dwóch wersjach, które są na tyle różne, że może przyciągnąć wielu nowych użytkowników. Python 2.x, starsza „starsza” gałąź, będzie nadal obsługiwana (to znaczy będzie otrzymywać oficjalne aktualizacje) do 2020 r., A później może pozostać nieoficjalnie. Python 3.x, obecne i przyszłe wcielenie języka, ma wiele przydatnych i ważnych funkcji, których nie ma w Pythonie 2.x, takich jak nowe funkcje składni (np. „Operator morsa”), lepsze sterowanie współbieżnością i więcej sprawny tłumacz.

Najdłużej spowolniono adopcję Pythona 3 ze względu na względny brak obsługi bibliotek zewnętrznych. Wiele bibliotek Pythona obsługiwało tylko Python 2, co utrudnia zmianę. Jednak w ciągu ostatnich kilku lat liczba bibliotek obsługujących tylko Python 2 zmalała; wszystkie najpopularniejsze biblioteki są teraz kompatybilne zarówno z Pythonem 2, jak i Pythonem 3. Obecnie Python 3 jest najlepszym wyborem dla nowych projektów; nie ma powodu, aby wybrać Python 2, chyba że nie masz wyboru. Jeśli utkniesz w Pythonie 2, masz do dyspozycji różne strategie.

Biblioteki Pythona

Sukces Pythona opiera się na bogatym ekosystemie oprogramowania własnego i innych firm. Python korzysta zarówno z silnej biblioteki standardowej, jak i bogatego asortymentu łatwo dostępnych i łatwo używanych bibliotek od zewnętrznych programistów. Python został wzbogacony dziesięcioleciami rozwoju i wkładu.

Standardowa biblioteka Pythona zawiera moduły do ​​typowych zadań programistycznych - matematyki, obsługi ciągów znaków, dostępu do plików i katalogów, sieci, operacji asynchronicznych, wątków, zarządzania wieloprocesowego i tak dalej. Ale zawiera również moduły, które zarządzają typowymi, wysokopoziomowymi zadaniami programistycznymi wymaganymi przez nowoczesne aplikacje: odczytywanie i zapisywanie strukturalnych formatów plików, takich jak JSON i XML, manipulowanie skompresowanymi plikami, praca z protokołami internetowymi i formatami danych (strony internetowe, adresy URL, poczta e-mail). Większość kodu zewnętrznego, który ujawnia interfejs funkcji obcych kompatybilny z C można uzyskać za pomocą ctypesmodułu Pythona .

Domyślna dystrybucja Pythona zapewnia również podstawową, ale użyteczną, wieloplatformową bibliotekę GUI za pośrednictwem Tkinter oraz osadzoną kopię bazy danych SQLite 3.

Tysiące bibliotek innych firm, dostępnych za pośrednictwem Python Package Index (PyPI), stanowią najsilniejszy przykład popularności i wszechstronności języka Python.

Na przykład:

  • Biblioteka BeautifulSoup zapewnia kompleksowy zestaw narzędzi do pobierania kodu HTML - nawet skomplikowanego, uszkodzonego kodu HTML - i wyodrębniania z niego danych.
  • Żądania sprawiają, że praca z żądaniami HTTP na dużą skalę jest bezbolesna i prosta.
  • Struktury takie jak Flask i Django umożliwiają szybki rozwój usług internetowych, które obejmują zarówno proste, jak i zaawansowane przypadki użycia.
  • Wiele usług w chmurze może być zarządzanych przez model obiektowy Pythona przy użyciu Apache Libcloud.
  • NumPy, Pandas i Matplotlib przyspieszają działania matematyczne i statystyczne oraz ułatwiają tworzenie wizualizacji danych.

Kompromisy w Pythonie

Podobnie jak C #, Java i Go, Python ma zarządzanie pamięcią zbieraną śmieci, co oznacza, że ​​programista nie musi implementować kodu do śledzenia i zwalniania obiektów. Zwykle wyrzucanie elementów bezużytecznych odbywa się automatycznie w tle, ale jeśli stwarza to problem z wydajnością, można je wyzwolić ręcznie lub całkowicie wyłączyć lub zadeklarować całe regiony obiektów wyłączone z wyrzucania elementów bezużytecznych w celu zwiększenia wydajności.

Ważnym aspektem Pythona jest jego dynamizm . Wszystko w języku, w tym same funkcje i moduły, jest traktowane jako obiekty. Dzieje się to kosztem szybkości (więcej o tym później), ale znacznie ułatwia pisanie kodu wysokiego poziomu. Programiści mogą wykonywać złożone operacje na obiektach za pomocą zaledwie kilku instrukcji, a nawet traktować części aplikacji jako abstrakcje, które można w razie potrzeby zmienić.

Wykorzystanie znacznych białych znaków przez Pythona jest wymieniane jako jeden z najlepszych i najgorszych atrybutów Pythona. Wcięcie w drugim wierszu poniżej nie służy tylko czytelności; jest częścią składni Pythona. Interpretery Pythona odrzucą programy, które nie używają odpowiednich wcięć do wskazania przepływu sterowania.

z open („myfile.txt”) jako my_file:

    file_lines = [x.rstrip ('\ n') for x in my_file]

Białe znaki składniowe mogą powodować marszczenie nosów i niektórzy ludzie odrzucają Pythona z tego powodu. Jednak ścisłe reguły wcięć są w praktyce znacznie mniej natrętne, niż mogłoby się wydawać w teorii, nawet przy najmniejszych edytorach kodu, w wyniku czego kod jest czystszy i bardziej czytelny.

Innym potencjalnym odstępstwem, szczególnie dla języków takich jak C lub Java, jest sposób, w jaki Python obsługuje pisanie zmiennych. Domyślnie Python używa pisania dynamicznego lub „kaczego” - świetne do szybkiego kodowania, ale potencjalnie problematyczne w przypadku dużych baz kodu. To powiedziawszy, Python niedawno dodał obsługę opcjonalnych podpowiedzi typu w czasie kompilacji, więc projekty, które mogą skorzystać z wpisywania statycznego, mogą z niego korzystać.

Czy Python jest wolny? Niekoniecznie

Jednym z powszechnych zastrzeżeń dotyczących Pythona jest to, że jest wolny. Obiektywnie to prawda. Programy w języku Python działają na ogół znacznie wolniej niż odpowiadające im programy w C / C ++ lub Javie. Niektóre programy w Pythonie będą wolniejsze o rząd wielkości lub więcej.