Python (мова праграмавання)

From Wikipedia, the free encyclopedia

Python (мова праграмавання)
Remove ads

Python (англ.: python — Па́йтан[ru]; ва ўсходнеславянскіх мовах пашырана назва піто́н[4])[5] — высокаўзроўневая мова праграмавання агульнага прызначэння, скіраваная на павышэнне прадукцыйнасці распрацоўшчыка і чытальнасці кода. Сінтаксіс ядра Python мінімалістычны. Пры гэтым стандартная бібліятэка ўключае вялікую колькасць карысных функцый.

Хуткія факты Клас мовы, Тып выканання ...

Узорнай рэалізацыяй мовы Python ёсць інтэрпрэтатар CPython, які падтрымлівае большасць пашыраных платформ[6]. Ён распаўсюджваецца пад свабоднай ліцэнзіяй Python Software Foundation License, якая дазваляе выкарыстоўваць яго без абмежаванняў у любых праграмах, у тым ліку і ва ўласніцкіх[7]. Існуюць рэалізацыі інтэрпрэтатараў для JVM (з магчымасцю кампіляцыі), MSIL (з магчымасцю кампіляцыі), LLVM і іншых. Праект PyPy прапануе рэалізацыю Пітона на самім Пітоне, што памяншае затраты на змяненне мовы і даследаванне новых магчымасцей.

Python актыўна развіваецца, новыя версіі (з новымі або змененымі моўнымі ўласцівасцямі) выходзяць прыкладна раз у два з паловай гады. З гэтае і некаторых іншых прычын на Python адсутнічаюць стандарт ANSI, ISO і іншыя афіцыйныя стандарты, іх ролю выконвае CPython.

Такія вэб-фрэймворкі, як Django, Pylons[en], Pyramid[8], TurboGears[9], web2py[10], Tornado[11], Flask, FastAPI і Zope[ru], дапамагаюць распрацоўнікам у стварэнні і суправаджэнні складаных праграм.

Remove ads

Філасофія мовы

Распрацоўшчыкі мовы «Пайтан» — трымаюцца пэўнай філасофіі праграмавання, называнай «дзэнам Пайтана[en]» (англ.: The Zen of Python)[12]. Аўтарам лічаць Ціма Пэйтэрса (англ.: Tim Peters).

Яе тэкст — выдаецца інтэрпрэтатарам Пайтана[13] на загад import this (працуе толькі раз за сесію):

"
  • Прыгожае — лепш за нязграбнае.
  • Яўнае — лепш за няяўнае.
  • Простае — лепш за складанае.
  • Складанае — лепш за мудрагелістае.
  • Плоскае — лепш за ўкладзенае.
  • Рэдкае — лепш за шчыльнае…
  • Чытальнасць — мае значэнне.
  • Асобыя выпадкі — не такія асобыя, каб парушаць правілы.
  • Хаця практычнасць — важнейшая за беззаганнасць…
  • Памылкі — ніколі не павінны праходзіць моўчкі.
  • Калі яны не замоўчаны яўна…
  • Сустрэўшы неадназначнасць — адкінь спакусу здагадацца!
  • Павінен быць адзін — (і пажадана – толькі адзін) — *відавочны* спосаб зрабіць гэта!
  • Хаця, гэты спосаб можа спачатку не быць відавочным — калі Вы не галандзец! [14]
  • Зараз — лепш за ніколі.
  • Хаця ніколі — часта лепш за «проста зараз»…
  • Калі ажыццяўленне *цяжка* растлумачыць — гэта — *кепская* ідэя.
  • Калі ажыццяўленне *лёгка* растлумачыць — магчыма, гэта — *добрая* ідэя! …
  • Прасторы імён — выдатная рэч! … Рабе́м іх пабольш!
"
Remove ads

Гісторыя

Thumb
Python Powered

Распрацоўваць мову 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 (напрыклад, байт-кампіляцыя зыходнага кода) таксама была рэалізавана раней у іншых мовах.

Remove ads

Сінтаксіс і семантыка

Thumb

Мове 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 -*-

Пасля гэтага можна выкарыстоўваць, напрыклад, кірыліцу ва Ўнікод-літэралах (Унікод-радках).

Remove ads

Папулярнасць

З 2003 года Python нязменна ўваходзіць у дзесятку самых папулярных моў праграмавання ў індэксе супольнасці праграмавання TIOBE, дзе па стане на кастрычнік 2021 года ён з’яўляецца самай папулярнай мовай (апярэджваючы Java і C).[23]

Эмпірычнае даследаванне паказала, што мовы сцэнарыяў, такія як Python, больш прадуктыўныя, чым звычайныя мовы, такія як C і Java, для праблем праграмавання, звязаных з маніпуляцыяй радкамі і пошукам у слоўніку, і вызначыла, што спажыванне памяці часта было «лепш, чым Java, а не значна горш, чым C або C++».[24]

Remove ads

Зноскі

    • .py — зыходны код.
    • .pyw — зыходны код для выканання праграм с графічным інтэрфейсам у Windows, файлы з такім пашырэннем будуць выкананы без запуску кансолі.
    • .pyc — скампіляваны байт-код.
    • .pyo — аптымізаваны скампіляваны байт-код.
    • .pyd — двайковы код дынамічных бібліятэк DLL (у Windows).
  1. Стваральнік мовы Гвіда ван Росум настойвае, што назва паходзіць не ад рэптыліі і не ад міфічнай істоты, а ад тэлеперадачы «Лятучы цырк Монці Пайтана». Гл.: http://docs.python.org/faq/general#why-is-it-called-python, аднак умоўная выява змяі даўно стала неафіцыйным сімвалам мовы і з’яўляецца часткай афіцыйнага лагатыпа.
  2. Python 2.5 license(недаступная спасылка)
  3. PEP 20 – The Zen of Python | peps.python.org. peps.python.org. Праверана 17 снежня 2023.
  4. Жартаўлівы намёк на нацыянальнасць аўтара — Гвіда ван Росума.
  5. 2.3.2. Reserved classes of identifiers(недаступная спасылка). Python documentation (18 октября 2009). Архівавана з першакрыніцы 27 студзеня 2011. Праверана 18 мая 2013.
  6. TIOBE Index. TIOBE - The Software Quality Company. Архівавана з першакрыніцы 12 кастрычніка 2021. Праверана 13 кастрычніка 2021.
  7. Difference between Python and C++. Праверана 24 мая 2022.
Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads