У паняцця ёсць і іншыя значэнні, гл. Python.

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

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

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

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

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

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

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

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

*Арыгінальны тэкст* (англ.)  

* Beautiful is better than ugly.
* Explicit is better than implicit.
* Simple is better than complex.
* Complex is better than complicated.
* Flat is better than nested.
* Sparse is better than dense.
* Readability counts.
* Special cases aren’t special enough to break the rules.
* Although practicality beats purity.
* Errors should never pass silently.
* Unless explicitly silenced.
* In the face of ambiguity, refuse the temptation to guess.
* There should be one — and preferably only one — obvious way to do it.
* Although that way may not be obvious at first unless you’re Dutch.
* Now is better than never.
* Although never is often better than 'right now'.
* If the implementation is hard to explain, it’s a bad idea.
* If the implementation is easy to explain, it may be a good idea.
* Namespaces are one honking great idea — let’s do more of those!

 | "|

Гісторыя
--------

Асноўны артыкул: **Гісторыя мовы праграмавання Python**
Python Powered
Распрацоўваць мову Python пачаў у канцы 1980-х гадоў супрацоўнік нідэрландскага інстытута CWI Гвіда ван Росум. Для размеркаванай АС Amoeba была патрэбна пашыраемая скрыптавая мова, і ван Росум ў вольны час пачаў пісаць Python, пазычыўшы некаторыя напрацоўкі для мовы ABC (ван Росум ўдзельнічаў у распрацоўцы гэтай мовы, скіраванай на навучанне праграмаванню). У лютым 1991 года ён апублікаваў зыходны тэкст у групе навін alt.sources. З самага пачатку Python распрацоўвалася як аб’ектна-арыентаваная мова.

Назва мовы паходзіць зусім не ад віду паўзуноў. Аўтар назваў мову па папулярнай брытанскай камедыйнай тэлепраграме 1970-х гадоў «Лятучы цырк Монці Пайтана». Зрэшты, усё роўна назву мовы часцей спалучаюць менавіта са змяёй, а не з тэлеперадачай — на піктаграмах файлаў у KDE і ў Microsoft Windows і нават на эмблеме на сайце python.org (да выхаду версіі 2.5) адлюстраваны змяіныя галовы.

Наяўнасць добразычлівай супольнасці разам з дызайнерскай інтуіцыяй ван Росума лічацца аднымі з галоўных чыннікаў поспеху мовы Python. Развіццё мовы ідзе згодна з дакладна акрэсленым працэсам стварэння, абмеркавання, адбору і зацверджання дакументаў PEP (англ.: Python Enhancement Proposal) — прапаноў па развіццю мовы Python.

3 снежня 2008 года, пасля працяглага тэсціравання, выйшла першая версія Python 3000 (або Python 3.0, таксама ўжываецца скарачэнне Py3k). У Python 3000 былі прыбраны многія недахопы архітэктуры, пры гэтым стараліся захаваць як мага большую (але няпоўную) сумяшчальнасць са старымі версіямі мовы Python. На сёння падтрымліваюцца абодва адгалінаванні мовы (Python 3.х і 2.x).

### Уплыў іншых моў на Python

Мова Python з’явілася адносна позна, і стваралася яна пад уплывам мноства моў праграмавання:

* ABC — водступы для групоўкі аператараў, высокаўзроўневыя структуры даных (map) (Па сутнасці, Python стваралася як спроба выправіць памылкі, дапушчаныя пры распрацоўцы мовы ABC);
* Modula-3 — пакеты, модулі, выкарыстанне `else` сумесна з `try` і `except`, іменаваныя аргументы функцый (на гэта таксама паўплываў Common Lisp);
* С, C++ — некаторыя сінтаксічныя пабудовы (як піша сам аўтар, ён выкарыстаў найбольш несупярэчлівыя пабудовы з мовы С, каб не выклікаць непрыязнасць у C-праграмістаў да мовы Python);
* Smalltalk — аб’ектна-арыентаванае праграмаванне;
* Lisp — асобныя рысы функцыйнага праграмавання (`lambda, map, reduce, filter` і іншыя);
* Fortran — зрэзы масіваў, камплексная арыфметыка;
* Miranda — спіскавыя выразы;
* Java — модулі logging, unittest, threading (частка магчымасцей зыходнага модуля не рэалізавана), xml.sax стандартнай бібліятэкі, сумеснае выкарыстанне finally і except пры апрацоўцы выключэнняў, выкарыстанне @ для дэкаратараў;
* Icon — генератары.

Большасць іншых магчымасцей мовы Python (напрыклад, байт-кампіляцыя зыходнага кода) таксама была рэалізавана раней у іншых мовах.

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

Гл. таксама: en:Python syntax and semantics

Мове 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`) і непажадана пераазначаць убудаваныя імёны. Імёны, якія пачынаюцца з сімвала падкрэслівання, маюць адмысловае прызначэнне.

У кожным месцы праграмы інтэрпрэтатар мае доступ к тром прасторам імён (то бок адлюстраванням імён у аб’екты): лакальнаму, глабальнаму і ўбудаванаму.

*Абсягі бачнасці* імён могуць быць укладзеныя адзін у адзін (унутры азначаемай функцыі відаць імёны з вакольнага блока коду). На практыцы з абсягамі бачнасці і звязваннем імён звязана некалькі правіл «добрага тону», пра якія падрабязней можна даведацца з дакументацыі.

### Радкі дакументацыі

У Пітоне прапануецца механізм дакументавання кода pydoc. У пачатак кожнага модуля, класа, функцыі ўстаўляецца радок дакументацыі *docstring (англ.)*. Радкі
дакументацыі застаюцца ў кодзе на момант выканання, і ў мову ўбудован доступ к дакументацыі, што выкарыстоўваецца сучаснымі IDE (напрыклад, Eclipse).

У інтэрактыўным рэжыме можна атрымаць дапамогу, згенераваць гіпертэкставую дакументацыю для цэлага модуля ці нават прымяніць *doctest (англ.)* для аўтаматычнага тэсціравання модуля.

### Указанні (дырэктывы)

Пачынаючы з Python 2.3, каб можна было выкарыстоўваць у тэксце праграмы сімвалы, якія не ўваходзяць у набор ASCII, неабходна яўна ўказваць кадзіроўку зыходнага коду ў пачатку модуля, напрыклад:

```
# -\*- coding: utf-8 -\*-

```

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

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

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

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

Зноскі
------

1. ↑  

	* .py — зыходны код.
	* .pyw — зыходны код для выканання праграм с графічным інтэрфейсам у Windows, файлы з такім пашырэннем будуць выкананы без запуску кансолі.
	* .pyc — скампіляваны байт-код.
	* .pyo — аптымізаваны скампіляваны байт-код.
	* .pyd — двайковы код дынамічных бібліятэк DLL (у Windows).
2. ↑  Python 2.7.3 Release
3. ↑  Python 3.3.0 Release
4. ↑  *Мария «Mifrill» Нефедова* Создатели языков программирования: Они такие разные, но кодинг их объединяет // Хакер № 09/08 (117) Архівавана 2 ліпеня 2013.
5. ↑  Стваральнік мовы Гвіда ван Росум настойвае, што назва паходзіць не ад рэптыліі і не ад міфічнай істоты, а ад тэлеперадачы «Лятучы цырк Монці Пайтана». Гл.: , аднак умоўная выява змяі даўно стала неафіцыйным сімвалам мовы і з’яўляецца часткай афіцыйнага лагатыпа.
6. ↑  About Python
7. ↑  Python 2.5 license(недаступная спасылка)
8. ↑
9. ↑
10. ↑
11. ↑
12. ↑  PEP 20 – The Zen of Python | peps.python.org **(нявызн.)**. *peps.python.org*. Праверана 17 снежня 2023.
13. ↑
14. ↑  Жартаўлівы намёк на нацыянальнасць аўтара — Гвіда ван Росума.
15. ↑  The Making of Python
16. ↑   Архівавана 17 лютага 2016.
17. ↑  Index of Python Enhancement Proposals (PEPs)
18. ↑  Python 3.0 Release
19. 1 2  Foreword for «Programming Python» (1st ed.)
20. ↑  The Making of Python
21. ↑  2.3.2. Reserved classes of identifiers **(нявызн.)**(недаступная спасылка). *Python documentation* (18 октября 2009). Архівавана з першакрыніцы 27 студзеня 2011. Праверана 18 мая 2013.
22. ↑  …целостность больших проектов на Python строится на двух вещах: тесты и doc-строка
23. ↑  TIOBE Index **(нявызн.)**.  TIOBE - The Software Quality Company. Архівавана з першакрыніцы 12 кастрычніка 2021. Праверана 13 кастрычніка 2021.
24. ↑  Difference between Python and C++ **(нявызн.)**. Праверана 24 мая 2022.

| ⛭Мовы праграмавання |
| --- |
| 
* Ada
* ActionScript
* ALGOL
* APL
* Асэмблер
* BASIC
* C
* C++
* C#
* COBOL
* Delphi
* Erlang
* Forth
* Fortran
* Go
* Haskell
* Java
* JavaScript
* Kotlin
* Lisp
* Logo
* Lua
* Modula-2
* Objective-C
* Pascal
* Perl
* PL/I
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* Scala
* SQL
* Scheme
* Smalltalk
* Swift
* Zig
* *больш...*

 |
|  Спіс паводле катэгорый |