Python (мова праграмавання)
Python | |
---|---|
Клас мовы |
шматпарадыгмавая: аб'ектна-арыентаваная, кросплатформавая, функцыйная |
Тып выканання | інтэрпрэтуемая, кампілюемая ў MSIL, кампілюемая ў байт-код Java |
З’явілася ў | 1991 |
Аўтар(ы) | Гвіда ван Росум |
Пашырэнне файлаў | .py, .pyw, .pyc, .pyo, .pyd[1] |
Рэліз | 2.7.3, 3.3.0 (10 красавіка 2012[2], 29 верасня 2012[3]) |
Тыпізацыя даных | строгая, дынамічная |
Асноўныя рэалізацыі | CPython, Jython, IronPython, PyPy, Stackless |
Дыялекты | Cython, RPython, Stackless Python |
Зведала ўплыў | ABC, Modula-3, Lisp, Tcl Smalltalk, C, Java, Icon |
Паўплывала на | Ruby, Boo, Groovy, ECMAScript, CoffeeScript |
Ліцэнзія | PSFL |
Сайт | www.python.org |
Python (англ.: python — Па́йтан ; ва ўсходнеславянскіх мовах пашырана назва піто́н[4])[5] — высокаўзроўневая мова праграмавання агульнага прызначэння, скіраваная на павышэнне прадукцыйнасці распрацоўшчыка і чытальнасці кода. Сінтаксіс ядра Python мінімалістычны. Пры гэтым стандартная бібліятэка ўключае вялікую колькасць карысных функцый.
Узорнай рэалізацыяй мовы Python ёсць інтэрпрэтатар CPython, які падтрымлівае большасць пашыраных платформ[6]. Ён распаўсюджваецца пад свабоднай ліцэнзіяй Python Software Foundation License, якая дазваляе выкарыстоўваць яго без абмежаванняў у любых праграмах, у тым ліку і ва ўласніцкіх[7]. Існуюць рэалізацыі інтэрпрэтатараў для JVM (з магчымасцю кампіляцыі), MSIL (з магчымасцю кампіляцыі), LLVM і іншых. Праект PyPy прапануе рэалізацыю Пітона на самім Пітоне, што памяншае затраты на змяненне мовы і даследаванне новых магчымасцей.
Python актыўна развіваецца, новыя версіі (з новымі або змененымі моўнымі ўласцівасцямі) выходзяць прыкладна раз у два з паловай гады. З гэтае і некаторых іншых прычын на Python адсутнічаюць стандарт ANSI, ISO і іншыя афіцыйныя стандарты, іх ролю выконвае CPython.
Такія вэб-фрэймворкі, як Django, Pylons , Pyramid[8], TurboGears[9], web2py[10], Tornado[11], Flask, FastAPI і Zope , дапамагаюць распрацоўнікам у стварэнні і суправаджэнні складаных праграм.
Філасофія мовы
[правіць | правіць зыходнік]Распрацоўшчыкі мовы «Пайтан» — трымаюцца пэўнай філасофіі праграмавання, называнай «дзэнам Пайтана » (англ.: The Zen of Python)[12]. Аўтарам лічаць Ціма Пэйтэрса (англ.: Tim Peters).
Яе тэкст — выдаецца інтэрпрэтатарам Пайтана[13] на загад import this
(працуе толькі раз за сесію):
Арыгінальны тэкст (англ.)
|
Гісторыя
[правіць | правіць зыходнік]Распрацоўваць мову Python пачаў у канцы 1980-х гадоў[15] супрацоўнік нідэрландскага інстытута CWI Гвіда ван Росум. Для размеркаванай АС Amoeba была патрэбна пашыраемая скрыптавая мова, і ван Росум ў вольны час пачаў пісаць Python, пазычыўшы некаторыя напрацоўкі для мовы ABC (ван Росум ўдзельнічаў у распрацоўцы гэтай мовы, скіраванай на навучанне праграмаванню). У лютым 1991 года ён апублікаваў зыходны тэкст у групе навін alt.sources[16]. З самага пачатку Python распрацоўвалася як аб’ектна-арыентаваная мова.
Назва мовы паходзіць зусім не ад віду паўзуноў. Аўтар назваў мову па папулярнай брытанскай камедыйнай тэлепраграме 1970-х гадоў «Лятучы цырк Монці Пайтана». Зрэшты, усё роўна назву мовы часцей спалучаюць менавіта са змяёй, а не з тэлеперадачай — на піктаграмах файлаў у KDE і ў Microsoft Windows і нават на эмблеме на сайце python.org (да выхаду версіі 2.5) адлюстраваны змяіныя галовы.
Наяўнасць добразычлівай супольнасці разам з дызайнерскай інтуіцыяй ван Росума лічацца аднымі з галоўных чыннікаў поспеху мовы Python. Развіццё мовы ідзе згодна з дакладна акрэсленым працэсам стварэння, абмеркавання, адбору і зацверджання дакументаў PEP (англ.: Python Enhancement Proposal) — прапаноў па развіццю мовы Python[17].
3 снежня 2008 года[18], пасля працяглага тэсціравання, выйшла першая версія Python 3000 (або Python 3.0, таксама ўжываецца скарачэнне Py3k). У Python 3000 былі прыбраны многія недахопы архітэктуры, пры гэтым стараліся захаваць як мага большую (але няпоўную) сумяшчальнасць са старымі версіямі мовы Python. На сёння падтрымліваюцца абодва адгалінаванні мовы (Python 3.х і 2.x).
Уплыў іншых моў на Python
[правіць | правіць зыходнік]Мова Python з’явілася адносна позна, і стваралася яна пад уплывам мноства моў праграмавання:
- ABC — водступы для групоўкі аператараў, высокаўзроўневыя структуры даных (map)[19][20] (Па сутнасці, Python стваралася як спроба выправіць памылкі, дапушчаныя пры распрацоўцы мовы ABC);
- Modula-3 — пакеты, модулі, выкарыстанне
else
сумесна зtry
іexcept
, іменаваныя аргументы функцый (на гэта таксама паўплываў Common Lisp); - С, C++ — некаторыя сінтаксічныя пабудовы (як піша сам аўтар, ён выкарыстаў найбольш несупярэчлівыя пабудовы з мовы С, каб не выклікаць непрыязнасць у C-праграмістаў да мовы Python[19]);
- Smalltalk — аб’ектна-арыентаванае праграмаванне;
- Lisp — асобныя рысы функцыйнага праграмавання (
lambda, map, reduce, filter
і іншыя); - Fortran — зрэзы масіваў, камплексная арыфметыка;
- Miranda — спіскавыя выразы;
- Java — модулі logging, unittest, threading (частка магчымасцей зыходнага модуля не рэалізавана), xml.sax стандартнай бібліятэкі, сумеснае выкарыстанне finally і except пры апрацоўцы выключэнняў, выкарыстанне @ для дэкаратараў;
- Icon — генератары.
Большасць іншых магчымасцей мовы Python (напрыклад, байт-кампіляцыя зыходнага кода) таксама была рэалізавана раней у іншых мовах.
Сінтаксіс і семантыка
[правіць | правіць зыходнік]Мове Python уласцівыя выразны і паслядоўны сінтаксіс, прадуманая модульнасць і пашыральнасць, дзякуючы чаму пітонаўскі зыходны код лёгка чытаць.
Python мае адну цікавую сінтаксічную асаблівасць: блокі коду выдзяляюцца з дапамогай водступаў (прабелаў або табуляцый), таму ў Пітоне няма т.зв. аператарных дужак begin/end, як у мове Паскаль, ці фігурных дужак, як у Сі. Гэта асаблівасць дазваляе скараціць колькасць радкоў і знакаў у зыходным кодзе і прывучае (калі не сказаць прымушае) да «добрага» стылю праграмавання. С другога боку, паводзіны і нават правільнасць праграмы можа залежаць ад пачатковых прабелаў у тэксце. Некаторыя могуць палічыць такія паводзіны нязручнымі і неінтуітыўнымі. Акрамя таго, гэта стварае пэўныя нязручнасці пры набіранні зыходнага коду глыбока ўкладзеных блокаў, бо прыходзіцца ў кожным новым радку ўводзіць пэўную колькасць прабельных знакаў, якая нарастае разам з глыбінёю ўкладання.
Аператары
[правіць | правіць зыходнік]Набор аператараў даволі звычайны, і нічым асабліва не адрозніваецца ад іншых распаўсюджаных моў праграмавання. Вось некаторыя з іх:
- умоўны аператар
if
(калі). Альтэрнатыўны блок пасляelse
(іначай). Калі ўмоў і альтэрнатыў некалькі, можна выкарыстоўваць ключавое словаelif
(скарачэнне адelse if
). - аператары цыкла
while
(пакуль) іfor
(для). Унутры цыкла можна выкарыстоўваць ключавыя словыbreak
(каб выйсці з цыкла, спыніўшы яго выкананне) іcontinue
(каб адразу перайсці да наступнай ітэрацыі). - аператар азначэння класа
class
. - аператар азначэння функцыі, метаду або генератара
def
. Каб вярнуцца з функцыі або метаду ўжываецца аператарreturn
(вяртанне), а ў выпадку генератара —yield
(даваць вынік). - аператар апрацоўкі выключэнняў
try
—except
—else
абоtry
—finally
(пачынаючы з версіі 2.5, можна выкарыстоўвацьfinally
,except
іelse
у адным блоку). - аператар
pass
нічога не робіць. Выкарыстоўваецца для пустых блокаў коду і заглушак.
Выразы
[правіць | правіць зыходнік]Выраз ёсць паўнапраўным аператарам у Пітоне. Склад, сінтаксіс, спалучальнасць і прыярытэт аперацый даволі звычайныя для моў праграмавання і накіраваны на скарачэнне ўжывання дужак.
Варта асобна адзначыць аперацыю фарматавання для радкоў (працуе падобна да printf()
з мовы Сі), якая выкарыстоўвае той самы сімвал, што і аператар узяцця астачы ад дзялення:
>>> print ("Прывітанне, %s!" % "Свет")
Прывітанне, Свет!
У Пітоне ёсць зручныя ланцужковыя параўнанні. Такія ўмовы ў праграмах — не рэдкасць:
1 <= a < 10 and 1 <= b < 20
Акрамя таго, лагічныя аперацыі (or
і and
) з’яўляюцца лянівымі: калі для вылічэння значэння аперацыі дастаткова першага аперанда, гэты аперанд і дае вынік (другі аперанд проста не вылічваецца), у адваротным выпадку вылічваецца другі аперанд лагічнай аперацыі. Гэта асноўваецца на ўласцівасцях алгебры логікі: напрыклад, калі адзін аргумент аперацыі «ЦІ» (or
) ёсць ісціна, то і вынік гэтай аперацыі ёсць ісціна. У выпадку, калі другі аперанд з’яўляецца складаным выразам, гэта дазваляе скараціць выдаткі на яго вылічэнне. Гэты факт шырока выкарыстоўваўся да версіі 2.5 замест умоўнай канструкцыі:
(a < b) and "менш" or "больш ці роўна"
Убудаваныя тыпы даных, як правіла, маюць асобны сінтаксіс для сваіх літэралаў (запісаных у зыходным кодзе пастаянных):
"радок" + 'радок' """таксама радок""" u"Унікод-радок"
True or False # булевы літэралы
3.14 # лік з плаваючай коскай
012 + 0xA # лікі ў васьмярковай і шаснаццатковай сістэмах злічэння
1 + 2j # камплексны лік
[1, 2, "a"] # спіс
(1, 2, "a") # упарадкаваная тройка (у агульным выпадку n-ка, т.зв. картэж)
{'a': 1, 'b': 'B'} # слоўнік
lambda x: x**2 # безыменная (ананімная) функцыя
Для спісаў (і іншых паслядоўнасцей) у мове Python прапануецца набор аперацый над зрэзамі. Асаблівасцю тут з’яўляецца індэксацыя, якая пачаткоўцу можа здацца дзіўнай, але па меры выкарыстання няцяжка пераканацца ў яе лагічнасці і ўзгодненасці. Індэксы элементаў спіса пачынаюцца з нуля. Запіс зрэзу s[N:M]
азначае, што ў зрэз трапляюць усе элементы ад N-га (разам з N-ым) да M-га (за выключэннем самога M-га). У якасці прыкладу можна паглядзець прыклад работы з паслядоўнасцямі.
Імёны
[правіць | правіць зыходнік]Імя (ідэнтыфікатар) можа пачынацца з лацінскай літары любога рэгістра або са знаку падкрэслівання _
, пасля чаго ў імені могуць выкарыстоўвацца і лічбы. У якасці імені нельга выкарыстоўваць ключавыя словы (іх пералік можна атрымаць з дапамогай каманд import keyword; print keyword.kwlist
) і непажадана пераазначаць убудаваныя імёны. Імёны, якія пачынаюцца з сімвала падкрэслівання, маюць адмысловае прызначэнне[21].
У кожным месцы праграмы інтэрпрэтатар мае доступ к тром прасторам імён (то бок адлюстраванням імён у аб’екты): лакальнаму, глабальнаму і ўбудаванаму.
Абсягі бачнасці імён могуць быць укладзеныя адзін у адзін (унутры азначаемай функцыі відаць імёны з вакольнага блока коду). На практыцы з абсягамі бачнасці і звязваннем імён звязана некалькі правіл «добрага тону», пра якія падрабязней можна даведацца з дакументацыі.
Радкі дакументацыі
[правіць | правіць зыходнік]У Пітоне прапануецца механізм дакументавання кода pydoc. У пачатак кожнага модуля, класа, функцыі ўстаўляецца радок дакументацыі docstring . Радкі дакументацыі застаюцца ў кодзе на момант выканання, і ў мову ўбудован доступ к дакументацыі[22], што выкарыстоўваецца сучаснымі IDE (напрыклад, Eclipse).
У інтэрактыўным рэжыме можна атрымаць дапамогу, згенераваць гіпертэкставую дакументацыю для цэлага модуля ці нават прымяніць doctest для аўтаматычнага тэсціравання модуля.
Указанні (дырэктывы)
[правіць | правіць зыходнік]Пачынаючы з Python 2.3, каб можна было выкарыстоўваць у тэксце праграмы сімвалы, якія не ўваходзяць у набор ASCII, неабходна яўна ўказваць кадзіроўку зыходнага коду ў пачатку модуля, напрыклад:
# -*- coding: utf-8 -*-
Пасля гэтага можна выкарыстоўваць, напрыклад, кірыліцу ва Ўнікод-літэралах (Унікод-радках).
Папулярнасць
[правіць | правіць зыходнік]З 2003 года Python нязменна ўваходзіць у дзесятку самых папулярных моў праграмавання ў індэксе супольнасці праграмавання TIOBE, дзе па стане на кастрычнік 2021 года ён з’яўляецца самай папулярнай мовай (апярэджваючы Java і C).[23]
Эмпірычнае даследаванне паказала, што мовы сцэнарыяў, такія як Python, больш прадуктыўныя, чым звычайныя мовы, такія як C і Java, для праблем праграмавання, звязаных з маніпуляцыяй радкамі і пошукам у слоўніку, і вызначыла, што спажыванне памяці часта было «лепш, чым Java, а не значна горш, чым C або C++».[24]
Зноскі
- ↑
- .py — зыходны код.
- .pyw — зыходны код для выканання праграм с графічным інтэрфейсам у Windows, файлы з такім пашырэннем будуць выкананы без запуску кансолі.
- .pyc — скампіляваны байт-код.
- .pyo — аптымізаваны скампіляваны байт-код.
- .pyd — двайковы код дынамічных бібліятэк DLL (у Windows).
- ↑ Python 2.7.3 Release
- ↑ Python 3.3.0 Release
- ↑ Мария «Mifrill» Нефедова Создатели языков программирования: Они такие разные, но кодинг их объединяет // Хакер № 09/08 (117) Архівавана 2 ліпеня 2013.
- ↑ Стваральнік мовы Гвіда ван Росум настойвае, што назва паходзіць не ад рэптыліі і не ад міфічнай істоты, а ад тэлеперадачы «Лятучы цырк Монці Пайтана». Гл.: http://docs.python.org/faq/general#why-is-it-called-python, аднак умоўная выява змяі даўно стала неафіцыйным сімвалам мовы і з’яўляецца часткай афіцыйнага лагатыпа.
- ↑ About Python
- ↑ Python 2.5 license(недаступная спасылка)
- ↑ https://trypyramid.com/
- ↑ https://turbogears.org/
- ↑ http://web2py.com/
- ↑ https://www.tornadoweb.org/en/stable/
- ↑ PEP 20 – The Zen of Python | peps.python.org . peps.python.org. Праверана 17 снежня 2023.
- ↑ https://www.python.org/shell/
- ↑ Жартаўлівы намёк на нацыянальнасць аўтара — Гвіда ван Росума.
- ↑ The Making of Python
- ↑ http://svn.python.org/view/*checkout*/python/trunk/Misc/HISTORY Архівавана 17 лютага 2016.
- ↑ Index of Python Enhancement Proposals (PEPs)
- ↑ Python 3.0 Release
- ↑ а б Foreword for «Programming Python» (1st ed.)
- ↑ The Making of Python
- ↑ 2.3.2. Reserved classes of identifiers(недаступная спасылка). Python documentation (18 октября 2009). Архівавана з першакрыніцы 27 студзеня 2011. Праверана 18 мая 2013.
- ↑ …целостность больших проектов на Python строится на двух вещах: тесты и doc-строка
- ↑ TIOBE Index . TIOBE - The Software Quality Company. Архівавана з першакрыніцы 12 кастрычніка 2021. Праверана 13 кастрычніка 2021.
- ↑ Difference between Python and C++ . Праверана 24 мая 2022.