Какво е Python? Мощно, интуитивно програмиране

Датиращ от 1991 г., езикът за програмиране Python се счита за запълващ празнини, начин за писане на скриптове, които „автоматизират скучните неща“ (както се казва в една популярна книга за изучаване на Python) или за бързо прототипиране на приложения, които ще бъдат внедрени на други езици .

През последните няколко години обаче Python се очертава като първокласен гражданин в съвременното разработване на софтуер, управление на инфраструктурата и анализ на данни. Той вече не е полезен език, но основна сила в създаването на уеб приложения и управлението на системите и ключов двигател на експлозията в анализа на големи данни и машинното разузнаване.

Свързано видео: Как Python улеснява програмирането

Перфектен за ИТ, Python опростява много видове работа, от автоматизация на системата до работа в авангардни области като машинно обучение.

Основните предимства на Python 

Успехът на Python се върти около няколко предимства, които предоставя както за начинаещи, така и за експерти.

Python е лесен за научаване и използване

Броят на функциите в самия език е скромен, изисквайки относително малко инвестиция на време или усилия, за да създадете първите си програми. Синтаксисът на Python е проектиран да бъде четим и ясен. Тази простота прави Python идеален език за преподаване и позволява на новодошлите да го вземат бързо. В резултат на това разработчиците прекарват повече време в мислене за проблема, който се опитват да разрешат, и по-малко в мислене за сложността на езика или дешифрирането на кода, оставен от други.

Python е широко приет и поддържан

Python е едновременно популярен и широко използван, тъй като високите класирания в проучвания като индекса Tiobe и големия брой проекти на GitHub, използващи Python, свидетелстват. Python работи на всяка основна операционна система и платформа, както и повечето по-малки. Много големи библиотеки и услуги, задвижвани от API, имат обвързвания или обвивки на Python, позволяващи на Python да се свързва свободно с тези услуги или да използва директно тези библиотеки. 

Python не е език за играчки

Въпреки че скриптовете и автоматизацията обхващат голяма част от случаите на използване на Python (повече за това по-късно), Python се използва и за изграждане на софтуер с професионално качество, както като самостоятелни приложения, така и като уеб услуги. Python може да не е най -бързият език, но това, което му липсва в скоростта, компенсира в гъвкавостта.

Python продължава да се движи напред

Всяка ревизия на езика Python добавя полезни нови функции, за да бъде в крак със съвременните практики за разработване на софтуер. Асинхронните операции и съпрограми, например, вече са стандартни части на езика, което улеснява писането на приложения на Python, които извършват едновременна обработка.

За какво се използва Python

Най-основният случай на използване на Python е като език за скриптове и автоматизация. Python не е просто заместител на скриптове или командни файлове; той също се използва за автоматизиране на взаимодействията с уеб браузъри или графични интерфейси на приложения или за извършване на системно осигуряване и конфигуриране в инструменти като Ansible и Salt. Но скриптове и автоматизация представляват само върха на айсберга с Python.

G ОБЩИ приложно програмиране с Python

Можете да създавате както команден ред, така и крос-платформени GUI приложения с Python и да ги разполагате като самостоятелни изпълними файлове. Python няма собствената способност да генерира самостоятелен двоичен файл от скрипт, но пакети на трети страни като cx_Freeze и PyInstaller могат да се използват за постигане на това.

Наука за данни и машинно обучение с Python

Усъвършенстваният анализ на данните се превърна в една от най-бързо движещите се области на ИТ и в един от основните случаи на използване на Python. По-голямата част от библиотеките, използвани за наука за данни или машинно обучение, имат интерфейси на Python, което прави езика най-популярният команден интерфейс на високо ниво за библиотеки за машинно обучение и други цифрови алгоритми.

Уеб услуги и RESTful API в Python

Родните библиотеки на Python и уеб рамките на трети страни осигуряват бързи и удобни начини за създаване на всичко - от прости REST API в няколко реда код до пълноценни сайтове, управлявани от данни. Най-новите версии на Python имат силна поддръжка за асинхронни операции, позволявайки на сайтовете да обработват десетки хиляди заявки в секунда с правилните библиотеки.

Метапрограмиране и генериране на код в Python

В Python всичко в езика е обект, включително модулите и библиотеките на Python. Това позволява на Python да работи като високоефективен генератор на код, което прави възможно писането на приложения, които манипулират собствените си функции и имат такава разширяемост, която би била трудна или невъзможна за изпълнение на други езици.

Python може да се използва и за задвижване на системи за генериране на код, като LLVM, за ефективно създаване на код на други езици.

„Код на лепило“ в Python

Python често се описва като „език на лепилото“, което означава, че може да позволи на различен код (обикновено библиотеки с C езикови интерфейси) да си взаимодействат. Използването му в науката за данни и машинното обучение е в този смисъл, но това е само едно въплъщение на общата идея. Ако имате приложения или програмни домейни, които искате да свържете, но не можете да говорите директно помежду си, можете да използвате Python, за да ги свържете.

Където Python не достига

Също така си струва да се отбележат видовете задачи, за които Python не е подходящ.

Python е език на високо ниво, така че не е подходящ за програмиране на системно ниво - драйверите на устройства или ядрата на операционната система са извън картината.

Също така не е идеален за ситуации, които изискват самостоятелни двоични файлове на различни платформи . Можете да създадете самостоятелно приложение на Python за Windows, MacOS и Linux, но не елегантно или просто.

И накрая, Python не е най-добрият избор, когато скоростта е абсолютен приоритет във всеки аспект на приложението. За това ви е по-добре да използвате C / C ++ или друг език от този калибър.

Как Python улеснява програмирането

Синтаксисът на Python е предназначен да бъде четлив и чист, с малко преструвания. Стандартният „здравей свят“ в Python 3.x не е нищо повече от:

print („Здравей, свят!“)

Python предоставя много синтактични елементи, за да изразят сбито много общи програмни потоци. Помислете за примерна програма за четене на редове от текстов файл в обект от списък, като по този начин премахнете всеки ред от завършващия символ на нов ред:

с отворен ('myfile.txt') като my_file:

    file_lines = [x.rstrip ('\ n') за x в my_file]

В with/asстроителството е контекст мениджър , което осигурява ефективен начин за конкретни примери обект на блок от код и след това да се разпорежда с него извън този блок. В този случай обектът е my_fileинстанциран с open() функцията. Това заменя мястото на няколко реда шаблон, за да се отвори файлът, да се прочетат отделни редове от него, след което да се затвори.

В [x … for x in my_file]строителството е друг Python собствен начин на мислене, на списък разбирането . Той позволява my_fileда се повтори елемент, който съдържа други елементи (тук и редовете, които съдържа), и позволява всеки повторен елемент (т.е. всеки x) да бъде обработен и автоматично добавен към списък.

Бихте могли да напишете такова нещо като формален for… цикъл в Python, както бихте написали на друг език. Въпросът е, че Python има начин да изрази икономически неща като цикли, които се итерират върху множество обекти и изпълняват проста операция върху всеки елемент в цикъла, или да работи с неща, които изискват изрично създаване на екземпляр и изхвърляне.

Конструкции като тази позволяват на разработчиците на Python да балансират краткостта и четливостта.

Другите езикови функции на Python са предназначени да допълнят обичайните случаи на употреба. Повечето съвременни типове обекти - Unicode низове например - са вградени директно в езика. Структурите на данни - като списъци, речници (т.е. хеш-карти или хранилища с ключ-стойност), кортежи (за съхранение на неизменяеми колекции от обекти) и набори (за съхраняване на колекции от уникални обекти) - са налични като стандартни издания.

Python 2 срещу Python 3

Python се предлага в две версии, които са достатъчно различни, за да отключат много нови потребители. Python 2.x, по-старият „наследствен“ клон, ще продължи да се поддържа (т.е. да получава официални актуализации) до 2020 г. и може да продължи неофициално след това. Python 3.x, настоящото и бъдещото въплъщение на езика, има много полезни и важни функции, които не се срещат в Python 2.x, като нови функции на синтаксиса (напр. „Оператор на моржове“), по-добър контрол на паралелността и още ефективен преводач.

Приемането на Python 3 беше забавено най-дълго от относителната липса на поддръжка на библиотеки на трети страни. Много библиотеки на Python поддържаха само Python 2, което затруднява превключването. Но през последните няколко години броят на библиотеките, поддържащи само Python 2, намаля; всички най-популярни библиотеки вече са съвместими както с Python 2, така и с Python 3. Днес Python 3 е най-добрият избор за нови проекти; няма причина да избирате Python 2, освен ако нямате избор. Ако сте останали с Python 2, имате на разположение различни стратегии.

Библиотеките на Python

Успехът на Python се основава на богата екосистема от софтуер на първа и трета страна. Python се възползва както от силна стандартна библиотека, така и от богат асортимент от лесно достъпни и лесно използвани библиотеки от разработчици на трети страни. Python е обогатен от десетилетия на разширяване и принос.

Стандартната библиотека на Python предоставя модули за често срещани задачи по програмиране - математика, обработка на низове, достъп до файлове и директории, работа в мрежа, асинхронни операции, нишки, многопроцесорно управление и т.н. Но също така включва модули, които управляват общи задачи за програмиране на високо ниво, необходими на съвременните приложения: четене и писане на структурирани файлови формати като JSON и XML, манипулиране на компресирани файлове, работа с интернет протоколи и формати на данни (уеб страници, URL адреси, имейл). Почти всеки външен код, който излага C-съвместим интерфейс за чужда функция, може да бъде достъпен с ctypesмодула на Python .

Разпределението по подразбиране на Python също предоставя елементарна, но полезна, междуплатформена GUI библиотека чрез Tkinter и вградено копие на базата данни SQLite 3.

Хилядите библиотеки на трети страни, достъпни чрез Python Package Index (PyPI), представляват най-силната витрина за популярността и гъвкавостта на Python.

Например:

  • Библиотеката BeautifulSoup предоставя всичко в едно кутия с инструменти за изстъргване на HTML - дори сложен, счупен HTML - и извличане на данни от него.
  • Requests прави работата с HTTP заявки в мащаб безболезнена и проста.
  • Рамки като Flask и Django позволяват бързо развитие на уеб услуги, които обхващат както прости, така и разширени случаи на употреба.
  • Множество облачни услуги могат да се управляват чрез обектния модел на Python, използвайки Apache Libcloud.
  • NumPy, Pandas и Matplotlib ускоряват математическите и статистическите операции и улесняват създаването на визуализации на данни.

Компромисите на Python

Подобно на C #, Java и Go, Python има управление на паметта, събрано от боклука, което означава, че програмистът не трябва да прилага код за проследяване и освобождаване на обекти. Обикновено събирането на боклука се случва автоматично във фонов режим, но ако това създава проблем с производителността, можете да го задействате ръчно или да го деактивирате изцяло или да декларирате цели региони на обекти, освободени от събирането на боклука, като подобрение на производителността.

Важен аспект на Python е неговата динамичност . Всичко в езика, включително функциите и самите модули, се обработват като обекти. Това става за сметка на скоростта (повече за това по-късно), но улеснява писането на код на високо ниво. Разработчиците могат да извършват сложни манипулации с обекти само с няколко инструкции и дори да третират части от приложението като абстракции, които могат да бъдат променени, ако е необходимо.

Използването на значителни бели пространства от Python е посочено едновременно като един от най-добрите и най-лошите атрибути на Python. Вдлъбнатината на втория ред по-долу не е само за четливост; това е част от синтаксиса на Python. Интерпретаторите на Python ще отхвърлят програми, които не използват правилно отстъп, за да посочат контролния поток.

с отворен ('myfile.txt') като my_file:

    file_lines = [x.rstrip ('\ n') за x в my_file]

Синтактичното празно пространство може да доведе до бръчки на носовете и някои хора отхвърлят Python поради тази причина. Но строгите правила за вдлъбнатини са много по-малко натрапчиви на практика, отколкото биха могли да изглеждат на теория, дори и с най-минималните редактори на код, и резултатът е код, който е по-чист и по-четлив.

Друг потенциален отстъп, особено за тези, които идват от езици като C или Java, е как Python се справя с въвеждането на променливи. По подразбиране Python използва динамично или „патешко“ писане - чудесно за бързо кодиране, но потенциално проблематично в големи кодови бази. Въпреки това, наскоро Python добави поддръжка за незадължително подсказване на типа по време на компилация, така че проекти, които могат да се възползват от статично въвеждане, могат да го използват.

Бавен ли е Python? Не е задължително

Една обща забележка за Python е, че е бавен. Обективно, вярно е. Програмите на Python обикновено се изпълняват много по-бавно от съответните програми в C / C ++ или Java. Някои програми на Python ще бъдат по-бавни с порядък или повече.