Python (անգլ.՝python, արտասանվում է որպես[ˈpaɪθ⟨ə⟩n] (փայթըն), սակայն հաճախ օգտագործվում է նաևպիտոն (ռուսերենից եկած) տարբերակը, որը նշանակում է կենդանի)[6], ընդհանուր նշանակության բարձր մակարդակի ծրագրավորման լեզու, որը հիմնականում կենտրոնացած է ծրագիրը արագ մշակելու և կոդի հեշտ ընթերցանությունն ապահովելու վրա։ Python-ի միջուկիշարահյուսությունը շատ պարզ և հեշտ է։ Միևնույն ժամանակ,ստանդարտ գրադարանը ներառում է բազմաթիվ օգտակար ֆունկցիաներ։
Python-ի հիմնական ինտերպրետատորըCPython-ն է։ Այն աջակցվում է ակտիվ օգտագործվող հարթակների մեծամասնության կողմից[7]։ Այն տարածվում է Python Software Foundation Licenseազատ արտոնագրով, որն թույլ է տալիս օգտագործել այն ցանկացած ծրագրերում առանց սահմանափակման[8]։ Գոյություն ունեն նաև ինտերպրետատորի տարբերակներJVM-ի (կոմպիլյացիայի հնարավորությամբ),MSIL-ի (կոմպիլյացիայի հնարավորությամբ),LLVM-ի համար։PyPy նախագիծն առաջարկում է Պիտոնի համար հենց Պիտոնով գրված ինտերպրետատոր։
Python-ը ակտիվ զարգացող ծրագրավորման լեզու է։ Նոր տարբերակները (լեզվի հատկությունների ավելացմամբ/փոփոխմամբ) թողարկվում են մոտավորապես 2.5 տարին մեկ անգամ։ Այդ և որոշ այլ պատճառներով, Python-ում բացակայում ենANSI,ISO և այլ պաշտոնական ստանդարտներ, որոնց դերը կատարում է CPython-ը։
Python-ի մշակողները հետևում են ծրագրավորման որոշ փիլիսոփայության, որն անվանում են «The Zen of Python» («Պիտոնիզենը» կամ «Փայթոնի զենը»)[9]։Ինտերպրետատորըimport this հրամանի դեպքում կարտածի այդ կոդը (աշխատում է միևնույն սեսիայում միայն մեկ անգամ)։ Այդ փիլիսոփայության հեղինակը Թիմ Փեյթերսն է։
Փիլիսոփայության տեքստը՝
Գեղեցիկն ավելի լավ է, քան տգեղը։
Հստակը ավելի լավ է, քան ոչ հստակը։
Պարզն ավելի լավ է, քան բարդը։
Բարդը ավելի լավ է, քան խճճվածը։
Հարթն ավելի լավ է, քան ծալվածը։
Նոսրն ավելի լավ է, քան խիտը։
Ընթերցելիությունը նշանակություն ունի։
Հատուկ դեպքերն այնքան հատուկ չեն, որ դրանց համար խախտել կանոնները։
Թեև գործնական լինելն ավելի կարևոր է, քան անթերի լինելը։
Python լեզվի մշակումն սկսվել է1980-ական թվականներին[11] հոլանդական CWI համալսարանի աշխատակիցԳվիդո վան Ռոսումի կողմից։ Այն ժամանակ տարածվածAmoebaօպերացիոն համակարգի համար անհրաժեշտ էր ընդլայնվող սկրիպտային ծրագրավորման լեզու, և Գվիդոն ազատ ժամանակ սկսեց գրել Python-ը, վերցնելով որոշ առանձնահատկություններABC լեզվից (Գվիդոն մասնակցել էր այդ լեզվի ստեղծմանը, որն կենտրոնացված է ծրագրավորման ուսուցման վրա)։1991 թ․ փետրվարին Գվիդոն հրապարակեց Python-ի ելակետային տեքստը alt.sourcesլրատվական խմբում[12]։ Ամենասկզբից Python-ն նախագծված էր որպեսօբյեկային կողմնորոշմամբ ծրագրավորման լեզու։
Հեղինակի խոսքերով, լեզուի անվանումն ծագել է ոչ թե սողունի անվանումից, այլ1970-ական թվականներին հայտնի բրիտանական հումորային«Մոնթի Փայթոնի թռչող կրկեսը» անվանումից։ Չնայած դրան, լեզվի անվանումը շատ հաճախ ասոցիացվում է օձի, ոչ թե ֆիլմի հետ։ Այդ մասին են խոսումKDE-ում կամMicrosoft Windows-ում .py ընդլայնմամբ ֆայլերի պատկերները, և նույնիսկ python.org կայքի պատեկերանիշը (մինչև 2.5 տարբերակը)։
2008 թվականիդեկտեմբերի 8-ին[13], երկարատև փորձարկումներից հետո, թողարկվեց Python 3000-ի նոր տարբերակը (կամ Python 3.0-ն, հաճախ օգտագործվում է նաև Py3kհապավումը)։ Python 3000-ում վերացված են կառուցվածքի որոշ թերություններ՝ հնարավորինս (բայց ոչ լրիվ) պահպանելով համատեղելիությունը Python-ի հին տարբերակների հետ։
Հայտնվելով համեմատականորեն ավելի ուշ, Python-ը ստեղծվել է մի քանի լեզուների ազդեցության տակ՝
ABC - օպերատորների խմբավորման համար հեռավորությունների կիրառումը, տվյալների բարձր մակարդակի կառուցվածքը (map)[14][15] (Python-ը, փաստորեն, ստեղծվել է նրա համար, որպեսզի ուղղվեն ABC-ի նախագծման ժամանակ առաջացած սխալները),
Modula-3 - փաթեթներ, մոդուլներ,else-ի օգտագործումըtry-ի ևexcept-ի հետ համատեղ, ֆունկցիաների արգումենտներին անվանումներ տալը (դրա վրա ազդել է նաևCommon Lisp լեզուն),
С,C++ - որոշ շարահյուսական կառուցներ (ինչպես գրում էԳվիդո վան Ռոսումը, նա օգտագործել է C-ի ամենից շատ չհակասող կառույցներ, որպեսզի Python-ը C-ծրագրավորողների մոտ զզվանք չառաջացնի Python[14]),
Ջավա - logging, unittest, threading մոդուլները (դրանց բնօրինակների հնարավորությունների մի մասն իրագործված չէ), xml.sax ստանդարտ գրադարանները, բացառությունների վերամշակման ժամանակ finally-ի և except-ի համատեղ օգտագործումը, @-ի օգտագործումըդեկորատորներում,
Այս կամ այն հարթակի հնանալուց հետո լեզվի հիմնական ճյուղում դրա աջակցումը դադարեցվում է։ Օրինակ, 2.6 տարբերակից սկսած դադարեցվել էWindows 95-ի,Windows 98-ի ևWindows ME-ի[17] աջակցությունը։ Սակայն այդ հարթակների վրա կարելի է օգտագործել Python-ի նախկին տարբերակներ․ այս պային Python-ի համայնքը աջակցում է լեզվի 2.3-ից սկսած բոլոր տարբերակները (դրանց համար ժամանակ առ ժամանակ թարմացումներ են թողարկվում)։
Չնայած այս ամենին, ի տարբերություն այլ դյուրատար համակարգերի, բոլոր հիմնական հարթակների համար Python-ն ունի տվյալ հարթակին բնորոշ տեխնոլոգիաների աջակցությւոն (օրինակ, MicrosoftCOM/DCOM)։ Ավելին, գոյություն ունեն Python-ի հատուկ տարբերակ Java―ի համար՝Jython-ը։ Այն թույլ է տալիս ինտերպրետատորին կատարվել Java―ի աջակցությամբ ցանկացած համակարգում։ Java―ի դասերը կարող են օգտագործվել և նույնիսկ գրվել Python-ի միջոցով։ Որոշ նախագծեր ապահովում են նաևMicrosoft .NET հարթակի հետ ինտեգրացիան։ Դրանցից հիմնականներն ենIronPython-ը ևPython.Net-ը։
Python-ն աջակցում է տվյալներիդինամիկ տիպավորում, այսինքն՝ փոփոխականի տեսակը որոշվում է այն օգատգործելու ժամանակ։ Այդ իսկ պատճառով, «փոփոխականին արժեք վերագրել» արտահայտության փոխարեն ավելի ճիշտ է օգտագործել «արժեքի կապումը որոշակի անվան հետ» արտահայտությունը։ Python-ն ունի հետևյալ ներկառուցված տիպերը՝տրամաբանական (boolean),տողային,Յունիկոդ-տողեր, կամայական ճշտությամբ ամբողջ թվեր,լողացող կետով թվեր,բարդ թվեր և մի շարք այլ տիպեր։Հավաքածուներից Python-ում կան հետևյալ տիպերը՝ցուցակներ,կորտեժներ (չփոփոխվող ցուցակ),բառարաններ,բազմություններ և այլն[18]։ Բոլոր արժեքները, այդ թվում՝ ֆունկցիաները, մեթոդները, մոդուլները, դասերը, համարվում են օբյեկտներ։
Տվյալների նոր տիպ ստեղծելու համար անհրաժեշտ է կամ գրել նորդաս (class), կամ հրապարակել նոր տիպը ընդլայնման մոդուլում (օրինակ,Սի լեզվով գրված մոդուլում)։ Դասերի համակարգը աջակցում էժառանգում (միակի ևբազմակի) ևմետածրագրավորում։ Ներկառուցված տիպերի և ընդլայնումների տիպերի մեծ մասը հնարավոր է ժառանգել[19] ևbpython[20]։
Բոլոր օբյեկտներն բաժանվում են երկու մասի՝ հղումային և ատոմային։ Ատոմային ենint-ը,long-ը,complex-ը և մի շարք այլ օբեկտներ։ Ատոմային օբյեկտների վերագրման ժամանակ պատճենվում են դրանց արժեքները, մինչդեռ հղումային օբյեկտների դեպքում պատճենվում է միայն դեպի այդ օբյեկտ հղումը, որի շնորհիվ երկու փոփոխականներն էլ օգտագործում են միևնույն արժեքը։ Հղումային օբյեկտներն իրենց հերթին լինում են 2 տեսակի՝ փոփոխվող և չփոփոխվող։ Օրինակ, տողերը և կորտեժները չփոփոխվող են, իսկ ցուցակները, բառարանները՝ փոփոխվող։ Python-ում կորտեժը, փաստորեն, համարվում է չփոփոխվող ցուցակ։ Շատ դեպքերում կորտեժներն ցուցակներից ավելի արագ են աշխատում[21], ուստի, եթե չեք ցանկանում փոփոխել հաջորդականությունը, ապա ավելի լավ է օգտագործել դրանք։
Python-ը ստաբիլ և բավականին տարածված լեզու է։ Այն օգտագործվում է բազմաթիվ նախագծերում։ Դրանցից մի մասում այն օգտագործվում է որպես հիմնական ծրագրավորման լեզու, մյուսներում՝ ծրագրերում ընդլայնումների ստեղծման համար։ Python լեզվով են ստեղծվել բազմաթիվ մեծ ու փոքր նախագծեր։ Այն նաև օգտագործվում է ապագայում ստեղծվելիք ծրագրերի համար նախատիպեր ստեղծելու համար։ Python-ը օգտագործվում է բազմաթիվ ընկերություններում[22]։
Python-ը, իրNumPy,SciPy ևMatPlotLib փաթեթների շնորհիվ, շատ դեպքերում օգտագործվում է որպես գիտական հաշվարկների համար ունիվերսալ միջավայր։ Այդպիսով, այն շատ դեպքերում կարող է փոխարինել այնպիսի կոմերցիոն ծրագրերին, ինչպիսիք ենMatlab-ը ևIDL-ը[23][24]։