Shko te përmbajtja

Python

Nga Wikipedia, enciklopedia e lirë
Python
Image
ParadigmaMulti-paradigm: object-oriented,[1] procedural (imperative), functional, structured, reflective
E projektuar ngaGuido van Rossum
ZhvilluesiPython Software Foundation
Doli mëshkurt 20, 1991; 34 vite më parë (1991-02-20)[2]
Emetimi i fundit3.14.2[3] Edit this on Wikidata / 5 dhjetor 2025; Defekt: parametri i parë nuk kuptohet si datë ose orë. (5 dhjetor 2025)
Tipi i disciplinësDuck, dynamic, strong;[4] optional type annotations[a]
ImplementimiCPython, PyPy, MicroPython, CircuitPython, IronPython, Jython, Stackless Python
DialektiCython, RPython, Starlark[6]
Ndikuar ngaABC,[7] Ada,[8][failed verification] ALGOL 68,[9] APL,[10] C,[11] C++,[12] CLU,[13] Dylan,[14] Haskell,[15][10] Icon,[16] Lisp,[17] Modula-3,[9][12] Perl,[18] Standard ML[10]
Ndikoi nëApache Groovy, Boo, Cobra, CoffeeScript,[19] D, F#, GDScript, Go, JavaScript,[20][21] Julia,[22] Mojo,[23] Nim, Ring,[24] Ruby,[25] Swift,[26] V[27]
SOCross-platform including 32-bit Windows 10 and e.g. for mobile; Android and iOS (both 64-bit)[b]
LicencaPython Software Foundation License
Filename extension(s).py, .pyw, .pyz,[32]
.pyi, .pyc, .pyd
Websitepython.org

Python është një gjuhë programimi e nivelit të lartë dhe me qëllim të përgjithshëm . Filozofia e saj e dizajnit thekson lexueshmërinë e kodit me përdorimin e identimit të theksuar (hapësirave në fillim të rreshtave) . Python kontrollohet në mënyrë dinamike sipas llojit dhe mblidhet nga mbeturinat . Ai mbështet paradigma të shumta programimi, duke përfshirë programimin e strukturuar (veçanërisht procedural ),atë të orientuar drejt objekteve dhe programimin funksional.

Guido van Rossum filloi të punonte në Python në fund të viteve 1980 si një pasardhës i gjuhës së programimit ABC . Python Versioni 3.0, i publikuar në vitin 2008, ishte një rishikim i madh dhe jo plotësisht i pajtueshëm me versionet e mëparshme. Duke filluar me Python 3.5, [33] aftësi dhe fjalë kyçe për shtypje iu shtuan gjuhës, duke lejuar shtypjen statike opsionale. [34] Që prej 2025 , Python Software Foundation mbështet Python 3.10, 3.11, 3.12, 3.13 dhe 3.14, duke ndjekur ciklin vjetor të publikimit të projektit dhe politikën pesëvjeçare të mbështetjes. Versionet e mëparshme në serinë 3.x kanë arritur në fund të jetës së tyre dhe nuk marrin më përditësime sigurie.

Python ka fituar përdorim të gjerë në komunitetin e të mësuarit makinerik . [35] [36] [37] [38] Mësohet gjerësisht si një gjuhë hyrëse programimi . [39] Që nga viti 2003, Python është renditur vazhdimisht në dhjetë gjuhët më të njohura të programimit në Indeksin e Komunitetit të Programimit TIOBE, i cili rendit gjuhët bazuar në kërkimet në 24 platforma.[40]

Image
Dizajneri i Python, Guido van Rossum, në PyCon US 2024

Python u krijua në fund të viteve 1980 nga Guido van Rossum në Centrum Wiskunde & Informatica (CWI) në Holandë . U projektua si pasardhës i gjuhës së programimit ABC, e cila u frymëzua nga SETL, e aftë të trajtojë përjashtime dhe të ndërveprojë me sistemin operativ Amoeba . Implementimi i Python filloi në dhjetor 1989. Van Rossum e publikoi për herë të parë në vitin 1991 si Python 0.9.0. Van Rossum mori përgjegjësinë e vetme për projektin, si zhvilluesi kryesor, deri më 12 korrik 2018, kur ai njoftoi "pushimin e tij të përhershëm" nga përgjegjësitë si " diktatori bamirës për jetë " i Python (BDFL); ky titull iu dha atij nga komuniteti i Python për të reflektuar angazhimin e tij afatgjatë si vendimmarrësi kryesor i projektit. (Ai që atëherë ka dalë nga pensioni dhe është vetëtitulluar "BDFL-emeritus".) Në janar në vitin 2019, zhvilluesit aktivë të Python core zgjodhën një Këshill Drejtues prej pesë anëtarësh për të udhëhequr projektin. [41] [42]

Emri Python rrjedh nga seriali britanik i komedisë Monty Python's Flying Circus.. [43] (Shih § Naming .)

Python 2.0 u publikua më 16 tetor 2000, duke përfshirë shumë veçori të reja, të tilla si kuptimi i listave, mbledhja e mbeturinave që zbulon ciklet, numërimi i referencave dhe mbështetja për Unicode . Fundi i jetës së Python 2.7 fillimisht ishte caktuar për vitin 2015 dhe më pas u shty për në vitin 2020 për shkak të shqetësimit se një pjesë e madhe e kodit ekzistues nuk mund të transferohej lehtësisht në Python 3. [44] [45] Nuk merr më përditësime ose rregullime sigurie. [46] [47] Ndërsa Python 2.7 dhe versionet më të vjetra nuk mbështeten zyrtarisht, një implementim tjetër jozyrtar i Python, PyPy, vazhdon të mbështesë Python 2, dmth., "2.7.18+" (plus 3.11), me plusin që nënkupton (të paktën disa) "përditësime sigurie të transferuara ". [48]

Python Versioni 3.0 u publikua më 3 dhjetor 2008 dhe ishte një rishikim i madh dhe jo plotësisht i pajtueshëm me versionet e mëparshme, me disa semantikë të re dhe sintaksë të ndryshuar. Python 2.7.18, i publikuar në vitin 2020, ishte publikimi i fundit i Python 2. [49] Disa publikime në serinë Python 3.x i kanë shtuar gjuhës sintaksë të re dhe kanë bërë disa ndryshime (të konsideruara shumë të vogla) të papajtueshme me versionet e mëparshme.

Qe prej Dhje, Python 3.14.2 është publikimi më i fundit i qëndrueshëm.Të gjitha versionet më të vjetra të serisë 3.x kanë marrë një përditësim sigurie deri te Python 3.9.24 dhe pastaj sërish me 3.9.25, versioni i fundit në serinë 3.9. Python 3.10 është, që nga nëntori 2025, dega më e vjetër që ende mbështetet. Python 3.15 ka një version alfa të publikuar, dhe Android ka një ekzekutues zyrtar të shkarkueshëm të disponueshëm për Python 3.14. Publikimet marrin dy vite mbështetje të plotë të ndjekura nga tre vite mbështetje sigurie.

Filozofia dhe karakteristikat e dizajnit

[Redakto | Redakto nëpërmjet kodit]

Python është një gjuhë programimi me shumë paradigma . Programimi i orientuar nga objektet dhe programimi i strukturuar mbështeten plotësisht, dhe shumë nga veçoritë e tyre mbështesin programimin funksional dhe programimin e orientuar nga aspektet - duke përfshirë metaprogramimin dhe metaobjektet . Shumë paradigma të tjera mbështeten nëpërmjet zgjerimeve, duke përfshirë dizajnin me kontratë dhe programimin logjik . Python shpesh quhet 'gjuhë ngjitëse' [50] sepse është projektuar qëllimisht për të qenë në gjendje të integrojë komponentë të shkruar në gjuhë të tjera.

Python përdor shtypjen dinamike dhe një kombinim të numërimit të referencave dhe një mbledhësi të mbeturinave që zbulon ciklet për menaxhimin e kujtesës . [51] Ai përdor zgjidhjen dinamike të emrave ( lidhja e vonë ), e cila lidh emrat e metodave dhe variablave gjatë ekzekutimit të programit.

Dizajni i Python-it ofron njëfarë mbështetjeje për programimin funksional në "traditën Lisp ". Ai ka funksione filter, map dhe reduce ; përbërje të listave, fjalorë, bashkësi dhe shprehje gjeneratorësh . Biblioteka standarde ka dy module ( itertools dhe functools ) që zbatojnë mjete funksionale të huazuara nga Haskell dhe Standard ML .

Filozofia thelbësore e Python është përmbledhur në Zen of Python (PEP 20) e shkruar nga Tim Peters, i cili përfshin aforizma si këto:

  • Ekspliciti është më i mirë se impliciti.
  • E thjeshta është më e mirë se e ndërlikuara.
  • Lexueshmëria ka rëndësi.
  • Rastet e veçanta nuk janë aq të veçanta sa të thyejnë rregullat.
  • Megjithatë, praktika e mposht pastërtinë.
  • Gabimet nuk duhet të kalojnë kurrë në heshtje.
  • Përveç nëse heshtet në mënyrë të qartë.
  • Duhet të ketë një - dhe preferohet vetëm një - mënyrë të qartë për ta bërë këtë.

Megjithatë, Python ka marrë kritika për shkeljen e këtyre parimeve dhe për shtimin e fryrjes së panevojshme të gjuhës. [52] Përgjigjet ndaj këtyre kritikave vënë në dukje se Zen i Python është një udhëzues dhe jo një rregull. [53] Shtimi i disa veçorive të reja kishte qenë i diskutueshëm: Guido van Rossum dha dorëheqjen si Diktator Mirëdashës për Jetë pas konfliktit në lidhje me shtimin e operatorit të shprehjes së caktimit në Python 3.8. [54] [55]

Megjithatë, në vend që të ndërtonte të gjithë funksionalitetin në thelbin e tij, Python u dizajnua të ishte shumë i zgjerueshëm nëpërmjet moduleve. Ky modularitet kompakt e ka bërë atë veçanërisht të popullarizuar si një mjet për shtimin e ndërfaqeve të programueshme në aplikacionet ekzistuese. Vizioni i Van Rossum për një gjuhë me bërthamë të vogël kryesore me një bibliotekë të madhe standarde dhe një interpretues lehtësisht të zgjerueshëm buronte nga frustrimet e tij me ABC-në, e cila përfaqësonte qasjen e kundërt.

Python pretendon se përpiqet për një sintaksë dhe gramatikë më të thjeshtë dhe më pak të mbingarkuar, ndërkohë që u jep zhvilluesve një zgjedhje në metodologjinë e tyre të kodimit. Python-it i mungojnë sythet do while, të cilat Rossum i konsideronte të dëmshme. [56] Në kontrast me moton e Perl -it " ka më shumë se një mënyrë për ta bërë këtë ", Python mbështet një qasje ku "duhet të ketë një - dhe preferohet vetëm një - mënyrë të dukshme për ta bërë atë". Megjithatë, në praktikë, Python ofron shumë mënyra për të arritur një qëllim të caktuar. Ekzistojnë të paktën tre mënyra për të formatuar një literal vargu, pa asnjë siguri se cilën duhet të përdorë një programues. [57] Alex Martelli është një bashkëpunëtor në Python Software Foundation dhe autor librash Python; ai shkroi se "Të përshkruash diçka si 'të zgjuar' nuk konsiderohet kompliment në kulturën Python."

Zhvilluesit e Python zakonisht i japin përparësi lexueshmërisë mbi performancën. Për shembull, ata refuzojnë korrigjime për pjesët jo kritike të implementimit të referencës CPython që do të ofronin rritje të shpejtësisë që nuk justifikojnë koston e qartësisë dhe lexueshmërisë. [ verifikimi dështoi ] Shpejtësia e ekzekutimit mund të përmirësohet duke zhvendosur funksione kritike për shpejtësinë në module zgjerimi të shkruara në gjuhë të tilla si C, ose duke përdorur një përpilues të saktë si PyPy . Gjithashtu, është e mundur të transpilohet në gjuhë të tjera. Megjithatë, kjo qasje ose nuk arrin shpejtësinë e pritur, pasi Python është një gjuhë shumë dinamike, ose vetëm një nëngrup i kufizuar i Python përpilohet (me ndryshime të vogla semantike të mundshme). [58]

Python është menduar të jetë një gjuhë argëtuese për t’u përdorur. Ky qëllim pasqyrohet në emër – një nderim për grupin britanik të komedisë Monty Python – dhe në qasjet e këndshme ndaj disa udhëzuesve dhe materialeve referuese. Për shembull, disa shembuj kodi përdorin termat "spam" dhe "eggs" (në lidhje me një skeç të Monty Python ), në vend të termave tipikë "foo" dhe "bar" . [59] [60]

Një neologjizëm i zakonshëm në komunitetin Python është pythonic, i cili ka një gamë të gjerë kuptimesh që lidhen me stilin e programit: Kodi Pythonic mund të përdorë mirë idiomat Python; të jetë natyral ose të tregojë rrjedhshmëri në gjuhë; ose të jetë në përputhje me filozofinë minimaliste të Python dhe theksin në lexueshmëri. [61]

Sintaksa dhe semantika

[Redakto | Redakto nëpërmjet kodit]

Python është menduar të jetë një gjuhë lehtësisht e lexueshme. Formatimi i tij është vizualisht i pastër dhe shpesh përdor fjalë kyçe në anglisht, ndërsa gjuhët e tjera përdorin shenja pikësimi. Ndryshe nga shumë gjuhë të tjera, ai nuk përdor kllapa të përdredhura për të ndarë blloqet, dhe pikëpresjet pas deklaratave lejohen, por përdoren rrallë. Ka më pak përjashtime sintaksore dhe raste të veçanta sesa C ose Pascal .

Python përdor indentim e hapësirës së bardhë, në vend të kllapave të lakuara ose fjalëve kyçe, për të kufizuar blloqet . Një rritje në thellim vjen pas deklaratave të caktuara; një ulje në thellim shënon fundin e bllokut aktual. Kështu, struktura vizuale e programit përfaqëson me saktësi strukturën e tij semantike. [62] Kjo veçori nganjëherë quhet rregulli i anës së jashtme . Disa gjuhë të tjera e përdorin thellimin në këtë mënyrë; por në shumicën e gjuhëve,indentimi nuk ka kuptim semantik. Madhësia e rekomanduar e indentimi është katër hapësira. [63]

Deklaratat dhe rrjedha e kontrollit

[Redakto | Redakto nëpërmjet kodit]

Deklaratat e Python përfshijnë si në vijim:

  • Deklarata e caktimit, duke përdorur një shenjë të vetme barazimi =
  • Deklarata if, e cila ekzekuton me kusht një bllok kodi, së bashku me else dhe elif (një shkurtim i else if )
  • Deklarata for, e cila iteron mbi një objekt të iterueshëm, duke kapur çdo element në një variabël për përdorim nga blloku i bashkangjitur; variabla nuk fshihet kur cikli përfundon.
  • Deklarata while, e cila ekzekuton një bllok kodi për sa kohë që kushti boolean është i vërtetë
  • Deklarata try, e cila lejon që përjashtimet e ngritura në bllokun e kodit të bashkangjitur të kapen dhe trajtohen nga deklaratat except (ose sintaksa e re except* në Python 3.11 për grupet e përjashtimeve); [64] deklarata try gjithashtu siguron që kodi i pastrimit në një bllok finally të ekzekutohet gjithmonë pavarësisht se si del blloku.
  • Deklarata raise, e përdorur për të ngritur një përjashtim të specifikuar ose për të ri-ngrerë një përjashtim të kapur
  • Deklarata e class, e cila ekzekuton një bllok kodi dhe ia bashkëngjit hapësirën e tij lokale të emrave një klase, për përdorim në programimin e orientuar nga objektet.
  • Deklarata def, e cila përcakton një funksion ose metodë
  • Deklarata with, e cila përfshin një bllok kodi brenda një menaxheri konteksti, duke lejuar sjellje të ngjashme me blerjen e burimeve si inicializim (RAII) dhe duke zëvendësuar një idiom të zakonshëm try/finally [65] Shembuj të një konteksti përfshijnë marrjen e një bllokimi përpara se të ekzekutohet një kod dhe më pas lirimin e bllokimit; ose hapjen dhe më pas mbylljen e një skedari.
  • Deklarata break, e cila del nga një lak
  • Deklarata continue, e cila anashkalon pjesën tjetër të iteracionit aktual dhe vazhdon me tjetrin
  • Deklarata del, e cila heq një variabël—duke fshirë referencën nga emri në vlerë dhe duke prodhuar një gabim nëse variabli referohet përpara se të ripërcaktohet [c]
  • Deklarata pass, që shërben si një NOP (domethënë, pa operacion), e cila është e nevojshme sintaksisht për të krijuar një bllok kodi bosh.
  • Deklarata assert, e përdorur në debugging për të kontrolluar kushtet që duhet të zbatohen
  • Deklarata yield, e cila kthen një vlerë nga një funksion gjenerues (dhe gjithashtu një operator); përdoret për të zbatuar korutinat
  • Deklarata return, e përdorur për të kthyer një vlerë nga një funksion
  • Deklaratat e import dhe from, të përdorura për të importuar module, funksionet ose variablat e të cilave mund të përdoren në programin aktual.
  • Deklaratat match dhe case, analoge me një konstruksion deklarate switch, të cilat krahasojnë një shprehje me një ose më shumë raste si një masë e rrjedhës së kontrollit.

Deklarata e caktimit ( = ) lidh një emër si referencë me një objekt të veçantë, të alokuar dinamikisht. Variablat mund të kthehen më pas në çdo kohë te çdo objekti. Në Python, një emër variabli është një mbajtës reference gjenerik pa një lloj të dhënash fikse; megjithatë, ai gjithmonë i referohet një objekti me një lloj. Kjo quhet tipizim dinamik - në kontrast me gjuhët e tipizuara statikisht, ku çdo variabël mund të përmbajë vetëm një vlerë të një lloji të caktuar.

Python nuk mbështet optimizimin e thirrjeve bishtore ose vazhdimet e klasit të parë ; sipas Van Rossum, gjuha nuk do ta mbështesë kurrë. Megjithatë, mbështetje më e mirë për funksionalitetin e ngjashëm me korutinën ofrohet duke zgjeruar gjeneratorët e Python. Para versionit 2.5, gjeneratorët ishin iteratorë dembelë ; të dhënat kalonin në një drejtim nga gjeneratori. Nga Python versioni 2.5 e tutje, është e mundur të kalohen të dhënat përsëri në një funksion gjenerues; dhe nga versioni 3.3, të dhënat mund të kalohen përmes niveleve të shumëfishta të pirgut.

Shprehjet e Python përfshijnë si në vijim:

  • Operatorët +, - dhe * për mbledhje, zbritje dhe shumëzim matematikor janë të ngjashëm me gjuhë të tjera, por sjellja e ndarjes (division) ndryshon. Në Python ka dy lloje ndarjeje: ndarja e dyshemesë (floor division ose integer division) // dhe ndarja me pikë lundruese (floating-point division) /. Python përdor operatorin ** për fuqizim (exponentiation).
  • Python përdor operatorin + për bashkimin e vargjeve (string concatenation). Gjuha përdor operatorin * për të përsëritur një varg një numër të caktuar herësh.
  • Operatori infiks @ është menduar të përdoret nga biblioteka të tilla si NumPy për shumëzimin e matricave.[66][67]
  • Sintaksa :=, e quajtur “walrus operator”, u prezantua në Python 3.8. Ky operator cakton vlera variablave si pjesë e një shprehjeje më të madhe.[68]
  • Në Python, == krahasohet dy objekte sipas vlerës. Operatorit is mund t’i përdoret për të krahasuar identitetet e objekteve (krahasim sipas referencës), dhe krahasimet mund të lidhen së bashku — për shembull: a <= b <= c.
  • Python përdor and, or dhe not si operatorë boolean.
  • Python ka një lloj shprehjeje të quajtur list comprehension, dhe një shprehje më të përgjithshme të quajtur generator expression.
  • Funksionet anonime implementohen duke përdorur lambda expressions; megjithatë, çdo trup funksioni mund të përmbajë vetëm një shprehje.
  • Shprehjet kondicionale shkruhen si x if c else y. (Kjo është ndryshe nga operatori c ? x : y i zakonshëm në shumë gjuhë të tjera, ku rendi i operandëve ndryshon.)
  • Python bën dallim midis listave (lists) dhe tuple-ve (tuples). Listat shkruhen si [1, 2, 3], janë të ndryshueshme, dhe nuk mund të përdoren si çelësa të fjalorëve , pasi çelësat në Python duhet të jenë të pandryshueshëm. Tuple-t shkruhen si (1, 2, 3), janë të pandryshueshme dhe mund të përdoren si çelësa të fjalorëve, për sa kohë që të gjitha elementet e tuple janë të pandryshueshme. Operatorit + mund t’i përdoret për të bashkuar dy tuple, gjë që nuk ndryshon direkt përmbajtjen e tyre, por prodhon një tuple të ri që përmban elementët e të dyve. Për shembull, duke marrë variablin t që fillimisht është (1, 2, 3), ekzekutimi i t = t + (4, 5) së pari llogarit t + (4, 5), që jep (1, 2, 3, 4, 5); ky rezultat pastaj caktohet prapë tek t — duke “ndryshuar efektivisht përmbajtjen” e t duke respektuar natyrën e pandryshueshme të objekteve tuple. Kllapat janë opsionale për tuple në kontekste të qarta.[69]
  • Python ka ndarje të sekuencave (sequence unpacking) ku shumë shprehje, secila duke llogaritur në diçka që mund të caktohet (p.sh., një variabël ose një pronë e shkruhetshme), lidhen si kur formohet një literal tuple; si një tërësi, rezultatet vendosen në anën e majtë të shenjës së barazimit në një deklaratë caktimi. Kjo deklaratë pret një objekt të përsëritshëm (iterable) në anën e djathtë të barazimit që të prodhojë të njëjtin numër vlerash si shprehjet e shkruhetshme në anën e majtë; gjatë iterimit, deklarata cakton secilën nga vlerat e prodhuara në të djathtë tek shprehja përkatëse në të majtë.[70]
  • Python ka një operator “string format” % që funksionon në mënyrë analoge me formatin printf në gjuhën C — p.sh., "spam=%s eggs=%d" % ("blah", 2) jep "spam=blah eggs=2". Në Python 2.6+ dhe 3+, ky operator u plotësua me metodën format() të klasës str, p.sh., "spam={0} eggs={1}".format("blah", 2). Python 3.6 shtoi f-strings: spam = "blah"; eggs = 2; f'spam={spam} eggs={eggs}'.[71]
  • Vargjet (strings) në Python mund të bashkohen duke i “shtuar” me operatorin + (i njëjti si për numrat e plotë dhe flotantët); p.sh., "spam" + "eggs" jep "spameggs". Nëse vargjet përmbajnë numra, ato bashkohen si vargje dhe jo si numra, p.sh., "2" + "2" jep "22".
  • Python mbështet literalë vargjesh në disa mënyra:
    • Të kufizuara me thonjëza të vetme ose të dyfishta; thonjëzat e vetme dhe të dyfishta kanë funksionalitet të barabartë (ndryshe nga shell-et e Unix, Perl dhe gjuhët e ndikuara nga Perl). Të dy përdorin shenjën \ si karakter escape. Interpolimi i vargjeve u bë i disponueshëm në Python 3.6 si “formatted string literals”.
    • Triple-quoted, dmth. fillojnë dhe mbarojnë me tre thonjëza të vetme ose të dyfishta; mund të zgjaten në shumë linja dhe funksionojnë si here-documents në shell, Perl dhe Ruby.
    • Raw strings, të shënuara duke shtuar prefiksin r para literalit të vargut. Sekuencat escape nuk interpretohen; prandaj raw strings janë të dobishme ku ka shumë backslash, si në shprehje të rregullta (regex) ose rrugë stili Windows.(Krahaso "@-quoting" ne C#.)
  • Python ka shprehje për indeksim dhe prerje të array-ve (array slicing) në lista, të cilat shkruhen si a[key], a[start:stop] ose a[start:stop:step]. Indekset fillojnë nga zero, dhe indekset negative janë relative ndaj fundit. Pjesët (slices) marrin elementët nga indeksi fillestar deri tek indeksi përfundimtar, por pa përfshirë atë të fundit. Parametri i tretë opsional, i quajtur step ose stride, lejon që elementët të anashkalohen ose të kthehen në rend të kundërt. Indekset e pjesëve mund të lihen bosh — p.sh., a[:] jep një kopje të tërë listës. Çdo element i një slice është një kopje e shpejtë (shallow copy).

Në Python, një dallim midis shprehjeve dhe deklaratave zbatohet në mënyrë të ngurtë, në kontrast me gjuhë të tilla si Common Lisp, Scheme ose Ruby . Ky dallim çon në dyfishimin e disa funksionaliteteve, për shembull:

  • Kuptimet e listës kundrejt cikleve for
  • Shprehjet kushtëzuese kundrejt blloqeve if
  • Funksionet e integruara eval() kundrejt exec() (në Python 2, exec është një deklaratë); funksioni i parë është për shprehje, ndërsa i dyti është për deklarata

Një deklaratë nuk mund të jetë pjesë e një shprehjeje; për shkak të këtij kufizimi, shprehje të tilla si kuptimet e list dhe dict (dhe shprehjet lambda) nuk mund të përmbajnë deklarata. Si një rast i veçantë, një deklaratë caktimi si a = 1 nuk mund të jetë pjesë e shprehjes kushtëzuese të një deklarate kushtëzuese.

Image
Hierarkia standarde e tipit në Python 3

Python përdor tipizimin duck, dhe ka objekte të tipizuara, por emra variablash të patipizuara. Kufizimet e tipit nuk kontrollohen në kohën e përcaktimit; përkundrazi, operacionet në një objekt mund të dështojnë në kohën e përdorimit, duke treguar se objekti nuk është i një lloji të përshtatshëm. Pavarësisht se është i tipizuar dinamikisht, Python është i tipizuar fort, duke ndaluar operacionet që janë të përcaktuara dobët (p.sh., shtimi i një numri dhe një vargu) në vend që të përpiqet t'i interpretojë ato në heshtje.

Python u lejon programuesve të përcaktojnë llojet e tyre duke përdorur klasat, më shpesh për programim të orientuar nga objektet . Instancat e reja të klasave ndërtohen duke thirrur klasën, për shembull, SpamClass() ose EggsClass() ); klasat janë instanca tëmetaklasë type (i cili është një instancë e vetvetes), duke lejuar kështu metaprogramimin dhe reflektimin .

Përpara versionit 3.0, Python kishte dy lloje klasash, të dyja duke përdorur të njëjtën sintaksë: stili i vjetër dhe stili i ri . Versionet aktuale të Python mbështesin vetëm semantikën e stilit të ri.

Python mbështet shënime opsionale të tipit . [72] Këto shënime nuk imponohen nga gjuha, por mund të përdoren nga mjete të jashtme si mypy për të kapur gabimet. Python përfshin një modul typing që përfshin disa emra tipi për shënime tipi. [73] [74] Gjithashtu, Mypy mbështet një kompilues Python të quajtur mypyc, i cili shfrytëzon shënimet e tipit për optimizim. [75]

Summary of Python 3's built-in types
Tipi Ndryshueshmëri Përshkrim Shembuj sintakse
bool i pandryshueshëm Vlerë Boolean True

False
bytearray i ndryshueshëm Sekuencë bajtesh bytearray(b'Some ASCII')

bytearray(b"Some ASCII")

bytearray([119, 105, 107, 105])
bytes i pandryshueshëm Sekuencë bajtesh b'Some ASCII'

b"Some ASCII"

bytes([119, 105, 107, 105])
complex i pandryshueshëm Numër kompleks me pjesë reale dhe imagjinare 3+2.7j

3 + 2.7j

5j
dict i ndryshueshëm Tabelë asociative (ose fjalor) me çelësa dhe vlera; mund të përmbajë tipe të përziera (çelësa dhe vlera); çelësat duhet të jenë të një tipi të hashueshëm. {'key1': 1.0, 3: False}

{}
types.EllipsisType i pandryshueshëm Një vendmbajtës me pika të ndryshme që përdoret si indeks në array-t e NumPy-t. ...

Ellipsis
float i pandryshueshëm Numër lundrues me precizion të dyfishtë. Precizioni varet nga kompjuteri, por në praktikë zakonisht implementohet si një numër 64-bit sipas standardit IEEE 754 me 53 bit precizion

1.33333

frozenset i pandryshueshëm Set i pa renditur, nuk përmban elementë të përsëritur; mund të përmbajë tipe të ndryshme, nëse janë të hashueshëm frozenset({4.0, 'string', True})

frozenset()

int i pandryshueshëm Numër i plotë me madhësi të pakufizuar 42
list i ndryshueshëm Listë, mund të përmbajë tipe të ndryshme të të dhënave [4.0, 'string', True]

[]
types.NoneType i pandryshueshëm Një objekt që përfaqëson mungesën e një vlere, shpesh quhet null në gjuhë të tjera None
types.NotImplementedType i pandryshueshëm Një vendmbajtës që mund të kthehet nga operatorët e mbingarkuar për të treguar tipe operandësh që nuk mbështeten NotImplemented
range i pandryshueshëm Një sekuencë e pandryshueshme numrash, që përdoret zakonisht për të iteruar një numër të caktuar herësh në ciklet for range(1, 10)

range(10, 5, 2)
set i ndryshueshëm Set i pa renditur, nuk përmban elementë të përsëritur; mund të përmbajë tipe të ndryshme, nëse janë të hashueshëm {4.0, 'string', True}

set()
str i pandryshueshëm Një varg karakteresh: një sekuencë e pikave të kodit Unicode 'Wikipedia'

"Wikipedia"
"""Spanning
multiple
lines"""
tuple i pandryshueshëm Tuple, mund të përmbajë tipe të ndryshme të të dhënave (4.0, 'string', True)

('single element',)

()

Operacione aritmetike

[Redakto | Redakto nëpërmjet kodit]

Python përfshin simbole konvencionale për operatorët aritmetikë ( +, -, *, / ), operatorin e pjesëtimit të katit // dhe operatorin modulo % . (Me operatorin modulo, një mbetje mund të jetë negative, p.sh., 4 % -3 == -2 .) Gjithashtu, Python ofron simbolin ** për eksponencim, p.sh. 5**3 == 125 dhe 9**0.5 == 3.0 . Gjithashtu, ofron operatorin e shumëzimit të matricës @ . [76] Këta operatorë funksionojnë si në matematikën tradicionale; me të njëjtat rregulla përparësie, operatorët infiks + dhe - mund të jenë gjithashtu unarë, për të përfaqësuar përkatësisht numra pozitivë dhe negativë.

Pjesëtimi midis numrave të plotë prodhon rezultate me presje dhjetore. Sjellja e pjesëtimit ka ndryshuar ndjeshëm me kalimin e kohës:

  • Versioni aktual i Python (domethënë, që nga versioni 3.0) e ndryshoi operatorin / për të përfaqësuar gjithmonë pjesëtimin me presje dhjetore, p.sh., 5/2 == 2.5 .
  • U prezantua operatori i ndarjes së katit //, që do të thotë se 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0 dhe -7.5//3 == -3.0 . Për Python 2.7, shtimi i from __future__ import division deklarata lejon një moduli në Python 2.7 të përdorë rregullat e Python 3.x për pjesëtimin (shih më sipër).

Në termat e Python, operatori / përfaqëson pjesëtimin e vërtetë (ose thjesht pjesëtimin ), ndërsa operatori // përfaqëson pjesëtimin e katit. Përpara versionit 3.0, operatori / përfaqëson pjesëtimin klasik .

Rrumbullakosja drejt pafundësisë negative, megjithëse një metodë e ndryshme nga ajo në shumicën e gjuhëve, i shton qëndrueshmëri Python-it. Për shembull, kjo rrumbullakosje nënkupton që ekuacioni (a + b)//b == a//b + 1 është gjithmonë i vërtetë. Gjithashtu, rrumbullaksimi nënkupton që ekuacioni b*(a//b) + a%b == a është i vlefshëm si për vlerat pozitive ashtu edhe për ato negative të a . Siç pritej, rezultati i a%b qëndron në intervalin gjysmë të hapur [0, b ), ku b është një numër i plotë pozitiv; megjithatë, ruajtja e vlefshmërisë së ekuacionit kërkon që rezultati të qëndrojë në intervalin ( b, 0] kur b është negativ.

Python ofron një funksion round për rrumbullaksimin e një numri me float në numrin e plotë më të afërt. Për thyerjen e barazimit, Python 3 përdor metodën " round-to-even" : round(1.5) dhe round(2.5) të dyja prodhojnë 2 .Versionet e Python para 3 përdornin metodën " round-away-from-zero" : round(0.5) është 1.0, dhe round(-0.5) është −1.0 .

Python lejon që shprehjet booleane që përmbajnë marrëdhënie të shumëfishta barazie të jenë në përputhje me përdorimin e përgjithshëm në matematikë. Për shembull, shprehja a < b < c teston nëse a është më e vogël se b dhe b është më e vogël se c . Gjuhët e nxjerra nga C e interpretojnë këtë shprehje ndryshe: në C, shprehja së pari do të vlerësonte a < b, duke rezultuar në 0 ose 1, dhe ky rezultat më pas do të krahasohej me c .

Python përdor aritmetikë me saktësi arbitrare për të gjitha operacionet me numra të plotë. Lloji/klasa Decimal në modulin decimal ofron numra decimalë me presje dhjetore me një saktësi arbitrare të paracaktuar me disa mënyra rrumbullakesimi. Klasa Fraction në modulin fractions ofron saktësi arbitrare për numrat racionalë . [77]

Për shkak të bibliotekës së gjerë të matematikës së Python dhe bibliotekës së palës së tretë NumPy, gjuha përdoret shpesh për skriptim shkencor në detyra të tilla si përpunimi dhe manipulimi i të dhënave numerike. [78] [79]

Sintaksa e funksionit

[Redakto | Redakto nëpërmjet kodit]

Funksionet krijohen në Python duke përdorur fjalën kyçe def . Një funksion përcaktohet në mënyrë të ngjashme me mënyrën se si thirret, duke dhënë së pari emrin e funksionit dhe më pas parametrat e kërkuar. Ja një shembull i një funksioni që printon të dhënat e tij hyrëse:

def printer(input1, input2 = "tashmë aty"):
  print(input1)
  print(input2)
  
printer("Përshëndetje")
  
# Shembull i daljes:
# përshëndetje
# tashmë aty

Për të caktuar një vlerë të paracaktuar për një parametër funksioni në rast se nuk jepet asnjë vlerë aktuale në kohën e ekzekutimit, sintaksa e përcaktimit të variablave mund të përdoret brenda kokës së funksionit.

Programi "Përshëndetje, Botë!" :

print('Përshëndetje, Botë!')

Program për të llogaritur faktorialin e një numri të plotë jo-negativ:

text = input('Shkruaj një numër, dhe faktoriali i tij do të shtypet: ')
n = int(text)

if n < 0:
  raise ValueError('Duhet të shkruash një numër të plotë jo-negativ')

factorial = 1
for i in range(2, n + 1):
  factorial *= i

print(factorial)

Biblioteka e madhe standarde e Python-it përmendet zakonisht si një nga pikat e saj më të forta. Për aplikacionet që lidhen me internetin, mbështeten shumë formate dhe protokolle standarde si MIME dhe HTTP . Gjuha përfshin module për krijimin e ndërfaqeve grafike të përdoruesit, lidhjen me bazat e të dhënave relacionale, gjenerimin e numrave pseudorandom, aritmetikën me numra dhjetorë me saktësi arbitrare, manipulimin e shprehjeve të rregullta dhe testimin e njësive .

Disa pjesë të bibliotekës standarde mbulohen nga specifikimet - për shembull, implementimi i Web Server Gateway Interface (WSGI) wsgiref ndjek PEP 333 - por shumica e pjesëve specifikohen nga kodi i tyre, dokumentacioni i brendshëm dhe paketat e testimit . Megjithatë, për shkak se pjesa më e madhe e bibliotekës standarde është kod Python ndërplatformor, vetëm disa module duhet të ndryshohen ose rishkruhen për implementimet e varianteve.

Që nga 13 marsi 2025, the Python Package Index (PyPI), depoja zyrtare për programet shtesë të palëve të treta në Python, përmban mbi 614,339 paketa.

Mjediset e zhvillimit

[Redakto | Redakto nëpërmjet kodit]

Shumica e implementimeve të Python-it (përfshirë CPython) përfshijnë një cikël read–eval–print loop (REPL); kjo i lejon mjedisit të funksionojë si një interpretues i linjës së komandës, me të cilin përdoruesit fusin deklarata në mënyrë sekuenciale dhe marrin rezultate menjëherë. [80]

Gjithashtu, CPython është i pajisur me një mjedis të integruar zhvillimi (IDE) të quajtur IDLE, [81] i cili është i orientuar drejt fillestarëve. [ nevojitet citim ]

Shell-e të tjerë, duke përfshirë IDLE dhe IPython, shtojnë aftësi shtesë si përmirësim të plotësimit automatik, ruajtjes së gjendjes së sesionit dhe nxjerrjes në pah të sintaksës . [81] [82]

IDE-të standarde të desktopit përfshijnë PyCharm, Spyder dhe Visual Studio Code [83] ; ekzistojnë IDE të bazuara në shfletues web, siç janë mjediset e mëposhtme:

  • Jupyter Notebooks, një platformë informatike interaktive me burim të hapur; [84]
  • PythonAnywhere, një IDE e bazuar në shfletues dhe një mjedis hostimi; dhe
  • Canopy, një IDE komerciale nga Enthought që thekson informatikën shkencore . [85] [86]

Implementimi i referencës

[Redakto | Redakto nëpërmjet kodit]

CPython është implementimi referues i Python. Ky implementim është shkruar në C, duke përmbushur standardin C11 [87] që nga versioni 3.11. Versionet më të vjetra përdorin standardin C89 me disa veçori të zgjedhura të C99, por zgjerimet e palëve të treta nuk kufizohen vetëm në versionet më të vjetra të C - p.sh., ato mund të implementohen duke përdorur C11 ose C++. [88] CPython kompilon programet Python në një bytekod të ndërmjetëm, i cili më pas ekzekutohet nga një makinë virtuale . CPython shpërndahet me një bibliotekë të madhe standarde të shkruar në një kombinim të C dhe Python-it vendas.

CPython është i disponueshëm për shumë platforma, duke përfshirë Windows dhe shumicën e sistemeve moderne të ngjashme me Unix, duke përfshirë macOS (dhe Apple M1 Mac, që nga Python) 3.9.1, duke përdorur një instalues eksperimental). Duke filluar me Python 3.9, instaluesi i Python dështon qëllimisht të instalohet në Windows 7 dhe 8; [89] [90] Windows XP mbështetej deri në Python 3.5, me mbështetje jozyrtare për VMS . [91] Lëvizshmëria e platformës ishte një nga prioritetet më të hershme të Python. Gjatë zhvillimit të Python 1 dhe 2, madje mbështeteshin edhe OS/2 dhe Solaris ; që nga ajo kohë, mbështetja është hequr për shumë platforma.

Të gjitha versionet aktuale të Python (që nga versioni 3.7) mbështesin vetëm sisteme operative që kanë shumë fijezime, dhe deri tani nuk mbështesin aq shumë sisteme operative (duke hequr shumë të vjetruara) sesa në të kaluarën.

Kufizimet e implementimit të referencës

[Redakto | Redakto nëpërmjet kodit]
  • Përdorimi i energjisë së Python me CPython për kodin tipik të shkruar është shumë më i keq se ai i C me një faktor prej 75.88. [92]
  • Rendimenti i Python me CPython për kodin tipik të shkruar është më i keq se ai i C me një faktor prej 71.9. [92]
  • Përdorimi mesatar i memories së CPython për kodin e shkruar zakonisht është më i keq se ai i C me një faktor prej 2.4. [92]

Implementime të tjera

[Redakto | Redakto nëpërmjet kodit]

Të gjitha implementimet alternative kanë semantikë të paktën pak të ndryshme. Për shembull, një alternativë mund të përfshijë fjalorë të pakontrolluar, në kontrast me versionet e tjera aktuale të Python. Si një shembull tjetër në ekosistemin më të madh të Python, PyPy nuk e mbështet API-n e plotë të Python në C.

Krijimi i një skedari ekzekutues me Python shpesh bëhet duke përfshirë një interpretues të tërë Python në skedarin ekzekutues, gjë që bën që madhësitë binare të jenë masive për programet e vogla, [93] megjithatë ekzistojnë implementime që janë të afta të kompilojnë vërtet Python. Implementimet alternative përfshijnë si në vijim:

  • PyPy është një interpretues më i shpejtë dhe në përputhje me Python. 2.7 dhe 3.10. [94] Kompiluesi “just-in-time” i PyPy shpesh përmirëson shpejtësinë ndjeshëm në krahasim me CPython, por PyPy nuk mbështet disa librari të shkruara në C. PyPy ofron mbështetje për arkitekturën e grupit të udhëzimeve RISC-V .
  • Codon është një implementim me një kompilues paraprak (AOT), i cili kompilon një gjuhë të tipizuar statikisht si Python, "sintaksa dhe semantika e së cilës janë pothuajse identike me ato të Python, ka disa dallime të dukshme" [95] Për shembull, Codon përdor numra të plotë makine 64-bit për shpejtësi, jo në mënyrë arbitrare si me Python; Zhvilluesit e Codon pretendojnë se përshpejtimet mbi CPython janë zakonisht në rendin e dhjetë deri në njëqind herë. Codon kompilohet në kod makine (nëpërmjet LLVM ) dhe mbështet shumëfillëzimin nativ. [96] Codon gjithashtu mund të kompilohet në module zgjerimi Python që mund të importohen dhe përdoren nga Python.
  • MicroPython dhe CircuitPython janë Python 3 variante të optimizuara për mikrokontrollues, duke përfshirë Lego Mindstorms EV3 . [97]
  • Pyston është një variant i kohës së ekzekutimit të Python që përdor kompilimin "just-in-time" për të përshpejtuar ekzekutimin e programeve Python. [98]
  • Cinder është një degëzim i CPython 3.8 i orientuar drejt performancës që përmban një numër optimizimesh, duke përfshirë ruajtjen në memorje të kodit byte, vlerësimin e shpejtë të korutinave, një JIT metodë-në-kohë dhe një përpilues eksperimental të kodit byte. [99]
  • Gjuha e informatikës së integruar Snek [100] [101] [102] "është e frymëzuar nga Python, por nuk është Python. Është e mundur të shkruhen programe Snek që funksionojnë në një sistem të plotë Python, por shumica e programeve Python nuk do të funksionojnë në Snek." [103] Snek është i pajtueshëm me mikrokontrolluesit AVR 8-bitësh siç është Arduino i bazuar në ATmega 328P, si dhe me mikrokontrolluesit më të mëdhenj që janë të pajtueshëm me MicroPython . Snek është një gjuhë imperative që (ndryshe nga Python) lë jashtë programimin e orientuar nga objektet . Snek mbështet vetëm një lloj të dhënash numerike, i cili përmban precizion të vetëm 32-bitësh (i ngjashëm me numrat JavaScript, megjithëse më të vegjël).

Implementime të pambështetura

[Redakto | Redakto nëpërmjet kodit]

Python pa stack është një degëzim i rëndësishëm i CPython që implementon mikrofibra . Ky implementim përdor stivën e thirrjeve ndryshe, duke lejuar kështu programe masivisht të njëkohshme. PyPy gjithashtu ofron një version pa stack.

Janë zhvilluar kompilues Python të momentit, por tani nuk mbështeten:

  • Google filloi një projekt të quajtur Unladen Swallow në vitin 2009: ky projekt synonte të përshpejtonte interpretuesin e Python pesëfish duke përdorur LLVM dhe të përmirësonte aftësinë e shumëfishimit për shkallëzimin në mijëra bërthama, ndërsa implementimet tipike janë të kufizuara nga bllokimi global i interpretuesit .
  • Psyco është një kompilues i specializuar "just-in-time" që nuk prodhohet më, i cili integrohet me CPython dhe transformon kodin e bajtit në kod makine gjatë kohës së ekzekutimit. Kodi i emetuar është i specializuar për lloje të caktuara të të dhënave dhe është më i shpejtë se kodi standard Python. Psyco nuk e mbështet Python 2.7 ose më i ri.
  • PyS60 ishte një Python 2 interpretues për telefonat celularë Seria 60, i cili u publikua nga Nokia në vitin 2005. Interpretuesi zbatoi shumë module nga biblioteka standarde e Python, si dhe module shtesë për integrimin me sistemin operativ Symbian . Nokia N900 gjithashtu mbështet Python përmes bibliotekës së widget-eve GTK, duke lejuar që programet të shkruhen dhe të ekzekutohen në pajisjen e synuar. [104]

Transpilerë në gjuhë të tjera

[Redakto | Redakto nëpërmjet kodit]

Ekzistojnë disa kompilues/ transpilues për gjuhë objektesh të nivelit të lartë; gjuha burimore është Python i pakufizuar, një nëngrup i Python-it ose një gjuhë e ngjashme me Python-in:

  • Brython [105] dhe Transcrypt [106] [107] kompilojnë Python në JavaScript .
  • Cython kompilon një superbashkësi të Python në C. Kodi që rezulton mund të përdoret me Python nëpërmjet thirrjeve të drejtpërdrejta të API-t në nivel C në interpretuesin Python.
  • PyJL kompilon/transpilon një nëngrup të Python në "kod burimor Julia të lexueshëm nga njeriu, të mirëmbajtur dhe me performancë të lartë". [58] Pavarësisht pretendimeve të zhvilluesve për performancë, kjo nuk është e mundur për kodin arbitrar Python; domethënë, kompilimi në një gjuhë ose kod makine më të shpejtë dihet se është i pamundur në rastin e përgjithshëm. Semantika e Python mund të ndryshohet potencialisht, por në shumë raste përshpejtimi është i mundur me pak ose aspak ndryshime në kodin Python. Kodi burimor Julia më i shpejtë mund të përdoret më pas nga Python ose të kompilohet në kod makine.
  • Nuitka kompilon Python në C. [108] Ky kompilues punon me Python 3.4 deri në 3.13 (dhe 2.6 dhe 2.7) për platformat kryesore të mbështetura nga Python (dhe Windows 7 ose edhe Windows XP) dhe për Android. Zhvilluesit e kompiluesve pretendojnë mbështetje të plotë për Python 3.10, mbështetje të pjesshme për Python 3.11 dhe 3.12, dhe mbështetje eksperimentale për Python 3.13. Nuitka mbështet macOS duke përfshirë versionet e bazuara në Apple Silicon. Kompiluesi është pa pagesë, megjithëse ka shtesa komerciale (p.sh., për fshehjen e kodit burimor).
  • Numba është një kompilues JIT që përdoret nga Python; kompiluesi përkthen një nëngrup të kodit Python dhe NumPy në kod të shpejtë makine. Ky mjet aktivizohet duke shtuar një dekorues në kodin përkatës Python.
  • Pythran kompilon një nëngrup të Python 3 në C++ ( C++11 ). [109]
  • RPython mund të kompilohet në C dhe përdoret për të ndërtuar interpretuesin PyPy për Python.
  • Transpileri Python → 11l → C++ [110] kompilon një nëngrup të Python-it 3 në C++ ( C++17 ).

Ekzistojnë gjithashtu përpilues të specializuar:

  • MyHDL është një gjuhë përshkrimi hardueri (HDL) e bazuar në Python që konverton kodin MyHDL në kod Verilog ose VHDL .

Ekzistonin disa projekte më të vjetra, si dhe kompilues që nuk ishin projektuar për përdorim me Python 3.x dhe sintaksën përkatëse:

  • Grumpy i Google-it e zëvendëson Python-in 2 për të shkuar . [111] [112] [113] Publikimi i fundit ishte në vitin 2017.
  • IronPython lejon ekzekutimin e Python 2.7 programe me .NET Common Language Runtime . [114] Një version alfa (i lëshuar në vitin 2021) është i disponueshëm për "Python 3.4, megjithëse mund të përfshihen veçori dhe sjellje nga versionet e mëvonshme." [115]
  • Jython kompilon Python 2.7 në kodin bajtesh Java, duke lejuar përdorimin e librarive Java nga një program Python. [116]
  • Pyrex (i publikuar për herë të fundit në 2010) dhe Shed Skin (i publikuar për herë të fundit në 2013) kompilohen përkatësisht në C dhe C++.

Një krahasim i performancës midis implementimeve të ndryshme të Python, duke përdorur një ngarkesë pune jo-numerike (kombinatoriale), u prezantua në EuroSciPy '13.[117] Përveç kësaj, performanca e Python në krahasim me gjuhët e tjera të programimit është krahasuar me The Computer Language Benchmarks Game . [118]

Ekzistojnë disa qasje për optimizimin e performancës së Python, pavarësisht ngadalësisë së natyrshme të një gjuhe të interpretuar . Këto qasje përfshijnë strategjitë ose mjetet e mëposhtme:

  • Kompilimi në kohë : Kompilimi dinamik i pjesëve të një programi Python gjatë ekzekutimit të programit. Kjo teknikë përdoret në biblioteka të tilla si Numba dhe PyPy .
  • Kompilimi statik : Ndonjëherë, kodi Python mund të kompilohet në kod makine diku para ekzekutimit. Një shembull i kësaj qasje është Cython, i cili kompilon Python në C.
  • Konkurrenca dhe paralelizmi : Detyra të shumëfishta mund të ekzekutohen njëkohësisht. Python përmban module të tilla si `multiprocessing` për të mbështetur këtë formë të paralelizmit. Për më tepër, kjo qasje ndihmon në kapërcimin e kufizimeve të Global Interpreter Lock (GIL) në detyrat e CPU-së.
  • Struktura efikase të të dhënave : Performanca mund të përmirësohet gjithashtu duke përdorur lloje të të dhënave të tilla si Set për testet e anëtarësisë ose deque nga collections për operacionet e radhës .
  • Rritjet në performancë mund të vërehen duke përdorur librari të tilla si NumPy . Shumica e librarive Python me performancë të lartë përdorin C ose Fortran në vend të interpretuesit Python. [119]

Zhvillimi i Gjuhës

[Redakto | Redakto nëpërmjet kodit]

Zhvillimi i Python kryhet kryesisht përmes procesit të Propozimit të Përmirësimit të Python (PEP); ky proces është mekanizmi kryesor për të propozuar veçori të reja kryesore, për të mbledhur kontributin e komunitetit mbi çështjet dhe për të dokumentuar vendimet e dizajnit të Python. Stili i kodimit Python trajtohet në PEP. 8. [63] PEP-të e shquara shqyrtohen dhe komentohen nga komuniteti i Python dhe këshilli drejtues.

Përmirësimi i gjuhës korrespondon me zhvillimin e implementimit të referencës CPython. Lista e postimeve python-dev është forumi kryesor për zhvillimin e gjuhës. Çështje specifike u diskutuan fillimisht në gjurmuesin e gabimeve Roundup të organizuar nga fondacioni. Në vitin 2022, të gjitha çështjet dhe diskutimet u migruan në GitHub . [120] Zhvillimi fillimisht u zhvillua në një depo të vetë-organizuar të kodit burimor që ekzekutonte Mercurial, derisa Python u zhvendos në GitHub në janar 2017. [121]

Versionet publike të CPython kanë tre lloje, të cilat dallohen nga ajo pjesë e numrit të versionit që rritet:

  • Versione të papajtueshme me versionet e prapambetura, ku kodi pritet të prishet dhe duhet të portohet manualisht. Pjesa e parë e numrit të versionit rritet. Këto lëshime ndodhin rrallë - versioni 3.0 u lëshua 8 vjet pas versionit 2.0. Sipas Guido van Rossum, një version 4.0 ndoshta nuk do të ekzistojë kurrë. [122]
  • Versionet kryesore ose "me karakteristika" janë kryesisht të pajtueshme me versionin e mëparshëm, por prezantojnë karakteristika të reja. Pjesa e dytë e numrit të versionit rritet. Duke filluar me Python 3.9, këto publikime pritet të ndodhin çdo vit. [123] [124] Çdo version kryesor mbështetet nga rregullime të gabimeve për disa vite pas publikimit të tij.
  • Versionet e korrigjimit të gabimeve, të cilat nuk prezantojnë veçori të reja, ndodhin afërsisht çdo tre muaj; këto versione bëhen kur një numër i mjaftueshëm gabimesh janë korrigjuar që nga versioni i fundit. Dobësitë e sigurisë gjithashtu korrigjohen në këto versione. Pjesa e tretë dhe e fundit e numrit të versionit rritet.

Shumë versione alfa, beta dhe kandidatë për lëshime lëshohen gjithashtu si parapamje dhe për testim para lëshimeve përfundimtare. Edhe pse ekziston një orar i përafërt për lëshimet, ato shpesh vonohen nëse kodi nuk është ende gati. Ekipi i zhvillimit të Python monitoron gjendjen e kodit duke ekzekutuar një suitë të madhe testimi njësie gjatë zhvillimit.

Konferenca kryesore akademike mbi Python është PyCon . Gjithashtu, ekzistojnë programe të veçanta mentorimi për Python, të tilla si PyLadies .

Emri i Python është frymëzuar nga grupi britanik i komedisë Monty Python, të cilin krijuesi i Python, Guido van Rossum, e shijoi gjatë zhvillimit të gjuhës. Referencat e Monty Python shfaqen shpesh në kodin dhe kulturën Python; për shembull, variablat metasintaksore të përdorura shpesh në literaturën Python janë spam dhe eggs, në vend të foo dhe bar tradicionale. Gjithashtu, dokumentacioni zyrtar i Python përmban referenca të ndryshme për rutinat e Monty Python. [125] [126] Përdoruesit e Python ndonjëherë quhen "Pythonistas". [127]

Gjuhët e ndikuara nga Python

[Redakto | Redakto nëpërmjet kodit]
  • Cobra ka një dokument Mirënjohjeje që e rendit Python-in të parin midis gjuhëve që kanë ndikuar. [128]
  • ECMAScript dhe JavaScript huazuan iteratorë dhe gjeneratorë nga Python. [129]
  • Go është projektuar për "shpejtësi pune në një gjuhë dinamike si Python". [130]
  • Julia u krijua për të qenë "po aq e përdorshme për programim të përgjithshëm sa Python". [131]
  • Mojo është pothuajse [132] një mbibashkësi e Python-it. [133]
  • GDScript është ndikuar fuqimisht nga Python. [134]
  • Groovy, Boo, CoffeeScript, F#, Nim, Ring, Ruby, Swift, dhe V janë ndikuar gjithashtu.
  • Lista e librave të programimit Python
  • pip (menaxher paketash)
  • Pydoc
  • NumPy
  • SciPy
  • Jupiter
  • Pytorch
  • Kitoni
  • CPython
  • Mojo
  • Pygame
  • PyQt
  • PyGTK
  • PyPy
  • PyCon
  • Google Colab  IDE online pa konfigurim që ekzekuton Python

a. ^ Që nga versioni 3.5, por ato këshilla injorohen, përveçse me mjete jozyrtare.

b.^

  • Niveli 1 (Tier 1): Linux 64-bit, macOS; Windows 8.1 64- dhe 32-bit dhe më të vonshme me versione më të vjetra të Python-it.
  • Niveli 2 (Tier 2): P.sh. WebAssembly 32-bit (WASI).
  • Niveli 3 (Tier 3): Android 64-bit, iOS, FreeBSD, dhe Raspberry Pi OS (32-bit). Jozyrtare (ose dihet që kanë funksionuar): variante të tjera Unix-like/BSD dhe disa platforma të tjera.

c. ^ del në Python nuk sillet në të njëjtën mënyrë si delete në gjuhë si C++, ku ai përdoret për të thirrur destruktorin dhe për të liruar memorien e heap-it.

  1. since 3.5, but those hints are ignored, except with unofficial tools[5]
  2. del in Python does not behave the same way delete in languages such as C++ does, where such a word is used to call the destructor and deallocate heap memory.
  1. "General Python FAQ – Python 3 documentation". docs.python.org. Marrë më 7 korrik 2024. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  2. "Python 0.9.1 part 01/21". alt.sources archives. Arkivuar nga origjinali më 11 gusht 2021. Marrë më 11 gusht 2021. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  3. "Python 3.14.2 and 3.13.11 are now available!". 5 dhjetor 2025. Marrë më 5 dhjetor 2025. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  4. "Why is Python a dynamic language and also a strongly typed language". Python Wiki. Arkivuar nga origjinali më 14 mars 2021. Marrë më 27 janar 2021. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  5. van Rossum, Guido; Levkivskyi, Ivan. "PEP 483 – The Theory of Type Hints". Python Enhancement Proposals (PEPs). Arkivuar nga origjinali më 14 qershor 2020. Marrë më 14 qershor 2018. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  6. "Starlark Language". bazel.build. Arkivuar nga origjinali më 15 qershor 2020. Marrë më 25 maj 2019. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  7. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura faq-created
  8. "Ada 83 Reference Manual (raise statement)". archive.adaic.com. Arkivuar nga origjinali më 22 tetor 2019. Marrë më 7 janar 2020. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  9. 1 2 Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura 98-interview
  10. 1 2 3 "itertools – Functions creating iterators for efficient looping". Python 3.7.17 documentation. Arkivuar nga origjinali më 14 qershor 2020. Marrë më 22 nëntor 2016. This module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  11. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura AutoNT-1
  12. 1 2 Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura classmix
  13. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura effbot-call-by-object
  14. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura AutoNT-2
  15. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura AutoNT-3
  16. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura AutoNT-4
  17. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura AutoNT-6
  18. "re – Regular expression operations". Python 3.10.6 documentation. Arkivuar nga origjinali më 18 korrik 2018. Marrë më 6 shtator 2022. This module provides regular expression matching operations similar to those found in Perl. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  19. "CoffeeScript". coffeescript.org. Arkivuar nga origjinali më 12 qershor 2020. Marrë më 3 korrik 2018. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  20. Rauschmayer, Axel (24 shkurt 2013). "Perl and Python influences in JavaScript". 2ality.com. Arkivuar nga origjinali më 26 dhjetor 2018. Marrë më 15 maj 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  21. Rauschmayer, Axel. "Chapter 3: The Nature of JavaScript; Influences". Speaking JavaScript. O'Reilly. Arkivuar nga origjinali më 26 dhjetor 2018. Marrë më 15 maj 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  22. Bezanson, Jeff; Karpinski, Stefan; Shah, Viral B.; Edelman, Alan (shkurt 2012). "Why We Created Julia". Julia website. Arkivuar nga origjinali më 2 maj 2020. Marrë më 5 qershor 2014. We want something as usable for general programming as Python [...] {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  23. Krill, Paul (4 maj 2023). "Mojo language marries Python and MLIR for AI development". InfoWorld (në anglisht). Arkivuar nga origjinali më 5 maj 2023. Marrë më 5 maj 2023.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  24. Ring Team (4 dhjetor 2017). "Ring and other languages". ring-lang.net. ring-lang. Arkivuar nga origjinali më 25 dhjetor 2018. Marrë më 4 dhjetor 2017. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  25. Gabim citimi: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura bini
  26. Lattner, Chris (3 qershor 2014). "Chris Lattner's Homepage". Chris Lattner. Arkivuar nga origjinali më 25 dhjetor 2018. Marrë më 3 qershor 2014. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  27. "V documentation (Introduction)". GitHub (në anglisht). Marrë më 24 dhjetor 2024.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  28. "PEP 738 – Adding Android as a supported platform | peps.python.org". Python Enhancement Proposals (PEPs) (në anglisht). Marrë më 19 maj 2024.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  29. "Download Python for Other Platforms". Python.org (në anglisht). Arkivuar nga origjinali më 27 nëntor 2020. Marrë më 18 gusht 2023.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  30. "test – Regression tests package for Python". Python 3.7.17 documentation. Arkivuar nga origjinali më 17 maj 2022. Marrë më 17 maj 2022. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  31. "platform – Access to underlying platform's identifying data". Python 3.10.4 documentation. Arkivuar nga origjinali më 17 maj 2022. Marrë më 17 maj 2022. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  32. Holth, Daniel; Moore, Paul (30 mars 2014). "PEP 0441 – Improving Python ZIP Application Support". Python Enhancement Proposals (PEPs). Arkivuar nga origjinali më 26 dhjetor 2018. Marrë më 12 nëntor 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  33. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  34. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  35. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  36. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  37. Briggs, Jason R.; Lipovača, Miran (2013). Python for kids: a playful introduction to programming. San Francisco, California, USA: No Starch Press. ISBN 978-1-59327-407-8. LCCN 2012044047. OCLC 825076499. OL 26119645M. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  38. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  39. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  40. "Reference counts". Docs.python.org (në anglisht). Arkivuar nga origjinali më 18 tetor 2012. Marrë më 5 qershor 2020. Since Python makes heavy use of malloc() and free()}, it needs a strategy to avoid memory leaks as well as the re‑use of freed memory. The method chosen is called reference counting.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  41. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  42. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  43. Briggs, Jason R.; Lipovača, Miran (2013). Python for kids: a playful introduction to programming. San Francisco, California, USA: No Starch Press. ISBN 978-1-59327-407-8. LCCN 2012044047. OCLC 825076499. OL 26119645M. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  44. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  45. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  46. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  47. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  48. "Reference counts". Docs.python.org (në anglisht). Arkivuar nga origjinali më 18 tetor 2012. Marrë më 5 qershor 2020. Since Python makes heavy use of malloc() and free()}, it needs a strategy to avoid memory leaks as well as the re‑use of freed memory. The method chosen is called reference counting.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  49. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  50. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  51. "Reference counts". Docs.python.org (në anglisht). Arkivuar nga origjinali më 18 tetor 2012. Marrë më 5 qershor 2020. Since Python makes heavy use of malloc() and free()}, it needs a strategy to avoid memory leaks as well as the re‑use of freed memory. The method chosen is called reference counting.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  52. Lutz, Mark (janar 2022). "Python changes 2014+". Learning Python. Arkivuar nga origjinali më 15 mars 2024. Marrë më 25 shkurt 2024. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  53. "Confusion regarding a rule in 'the Zen of Python'". Python.org. Python help. 2022-05-03. Arkivuar nga origjinali më 25 shkurt 2024. Marrë më 2024-02-25. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  54. Ambi, Chetan (2021-07-04). "The most controversial Python 'walrus operator'". Python simplified (pythonsimplified.com). Arkivuar nga origjinali më 27 gusht 2023. Marrë më 2024-02-05. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  55. Grifski, Jeremy (2020-05-24). "The controversy behind the 'walrus operator' in Python". The Renegade Coder (therenegadecoder.com). Arkivuar nga origjinali më 28 dhjetor 2023. Marrë më 2024-02-25. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  56. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  57. Bader, Dan. "Python string formatting best practices". Real Python (realpython.com). Arkivuar nga origjinali më 18 shkurt 2024. Marrë më 2024-02-25. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  58. 1 2 "Transpiling Python to Julia using PyJL" (PDF). Arkivuar (PDF) nga origjinali më 19 nëntor 2023. Marrë më 20 shtator 2023. After manually modifying one line of code by specifying the necessary type information, we obtained a speedup of 52.6×, making the translated Julia code 19.5× faster than the original Python code. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Gabim citimi: Invalid <ref> tag; name "PyJL" defined multiple times with different content
  59. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  60. "pprint – data pretty printer – Python 3.11.0 documentation". docs.python.org. Arkivuar nga origjinali më 22 janar 2021. Marrë më 2022-11-05. stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni'] {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  61. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  62. Guttag, John V. (12 gusht 2016). Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press. ISBN 978-0-262-52962-4. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  63. 1 2 van Rossum, Guido; Warsaw, Barry. "PEP 8 – Style Guide for Python Code". Python Enhancement Proposals (PEPs). Arkivuar nga origjinali më 17 prill 2019. Marrë më 26 mars 2019. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Gabim citimi: Invalid <ref> tag; name "pep8" defined multiple times with different content
  64. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  65. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  66. "PEP 0465 – A dedicated infix operator for matrix multiplication". python.org. Arkivuar nga origjinali më 4 qershor 2020. Marrë më 1 janar 2016. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  67. "Python 3.5.1 Release and Changelog". python.org. Arkivuar nga origjinali më 14 maj 2020. Marrë më 1 janar 2016. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  68. "What's New in Python 3.8". Arkivuar nga origjinali më 8 qershor 2020. Marrë më 14 tetor 2019. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  69. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  70. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  71. "PEP 498 – Literal String Interpolation". python.org. Arkivuar nga origjinali më 15 qershor 2020. Marrë më 8 mars 2017. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  72. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  73. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  74. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  75. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  76. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  77. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  78. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  79. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  80. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  81. 1 2 "IDLE — Python editor and shell". Python documentation (në anglisht). Marrë më 31 gusht 2025. IDLE is Python's Integrated Development and Learning Environment.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Gabim citimi: Invalid <ref> tag; name "idle" defined multiple times with different content
  82. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  83. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  84. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  85. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  86. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  87. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  88. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  89. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  90. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  91. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  92. 1 2 3 Pereira, Rui; Couto, Marco; Ribeiro, Francisco; Rua, Rui; Cunha, Jácome; Fernandes, João Paulo; Saraiva, João (2017-10-23). "Energy efficiency across programming languages: How do energy, time, and memory relate?". Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering. SLE 2017. New York, NY, USA: Association for Computing Machinery. fq. 256–267. doi:10.1145/3136014.3136031. ISBN 978-1-4503-5525-4. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  93. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  94. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  95. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  96. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  97. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  98. "Reference counts". Docs.python.org (në anglisht). Arkivuar nga origjinali më 18 tetor 2012. Marrë më 5 qershor 2020. Since Python makes heavy use of malloc() and free()}, it needs a strategy to avoid memory leaks as well as the re‑use of freed memory. The method chosen is called reference counting.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  99. Lutz, Mark (janar 2022). "Python changes 2014+". Learning Python. Arkivuar nga origjinali më 15 mars 2024. Marrë më 25 shkurt 2024. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  100. "Confusion regarding a rule in 'the Zen of Python'". Python.org. Python help. 2022-05-03. Arkivuar nga origjinali më 25 shkurt 2024. Marrë më 2024-02-25. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  101. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  102. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  103. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  104. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  105. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  106. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  107. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  108. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  109. Guelton, Serge; Brunet, Pierrick; Amini, Mehdi; Merlini, Adrien; Corbillon, Xavier; Raynaud, Alan (16 mars 2015). "Pythran: enabling static optimization of scientific Python programs". Computational Science & Discovery. IOP Publishing. 8 (1). Bibcode:2015CS&D....8a4001G. doi:10.1088/1749-4680/8/1/014001. ISSN 1749-4699. {{cite journal}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  110. "Reference counts". Docs.python.org (në anglisht). Arkivuar nga origjinali më 18 tetor 2012. Marrë më 5 qershor 2020. Since Python makes heavy use of malloc() and free()}, it needs a strategy to avoid memory leaks as well as the re‑use of freed memory. The method chosen is called reference counting.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  111. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  112. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  113. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  114. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  115. "Reference counts". Docs.python.org (në anglisht). Arkivuar nga origjinali më 18 tetor 2012. Marrë më 5 qershor 2020. Since Python makes heavy use of malloc() and free()}, it needs a strategy to avoid memory leaks as well as the re‑use of freed memory. The method chosen is called reference counting.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  116. Lutz, Mark (janar 2022). "Python changes 2014+". Learning Python. Arkivuar nga origjinali më 15 mars 2024. Marrë më 25 shkurt 2024. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  117. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  118. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  119. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  120. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  121. "Python Developer's Guide – Python Developer's Guide". devguide.python.org. Arkivuar nga origjinali më 9 nëntor 2020. Marrë më 17 dhjetor 2019. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  122. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  123. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  124. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  125. Lutz 2013, f. 17.
  126. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  127. Lubanovic, Bill (2014). Introducing Python. Sebastopol, CA : O'Reilly Media. fq. 305. ISBN 978-1-4493-5936-2. Marrë më 2023-07-31. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  128. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  129. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  130. "PEP 484 – Type Hints". Python Enhancement Proposals (në anglisht). Marrë më 27 tetor 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  131. "mypy – Optional Static Typing for Python". mypy-lang.org (në english). Marrë më 17 gusht 2025.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja) Mirëmbajtja CS1: Gjuhë e panjohur (lidhja)
  132. "Reference counts". Docs.python.org (në anglisht). Arkivuar nga origjinali më 18 tetor 2012. Marrë më 5 qershor 2020. Since Python makes heavy use of malloc() and free()}, it needs a strategy to avoid memory leaks as well as the re‑use of freed memory. The method chosen is called reference counting.{{cite web}}: Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  133. Lutz, Mark (janar 2022). "Python changes 2014+". Learning Python. Arkivuar nga origjinali më 15 mars 2024. Marrë më 25 shkurt 2024. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)
  134. "Confusion regarding a rule in 'the Zen of Python'". Python.org. Python help. 2022-05-03. Arkivuar nga origjinali më 25 shkurt 2024. Marrë më 2024-02-25. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Datë e përkthyer automatikisht (lidhja)

Lexime të mëtejshme

[Redakto | Redakto nëpërmjet kodit]

Lidhje të jashtme

[Redakto | Redakto nëpërmjet kodit]