Python

From Wikipedia, the free encyclopedia

Remove ads

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.

Fakte të shpejta Paradigma, E projektuar nga ...

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]

Remove ads

Histori

Thumb
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.

Remove ads

Filozofia dhe karakteristikat e dizajnit

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]

Remove ads

Sintaksa dhe semantika

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 .

Indentimi

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

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

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.

Shkrimi

Thumb
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]

Më shumë informacion Tipi, Ndryshueshmëri ...

Operacione aritmetike

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

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.

Remove ads

Shembuj kodi

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)

Bibliotekat

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.

Remove ads

Mjediset e zhvillimit

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]
Remove ads

Implementime

Implementimi i referencës

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

  • 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

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

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

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++.

Performanca

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]
Remove ads

Zhvillimi i Gjuhës

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 .

Remove ads

Emërtimi

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

  • 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.
Remove ads

Shih edhe

  • 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

Shënime

Lexime të mëtejshme

Lidhje të jashtme

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads