Python (programski jezik)

Disambig.svg »Python« preusmjerava ovamo. Za druga značenja, pogledajte Python (razdvojba).

Python je programski jezik opće namjene, interpretiran i visoke razine kojeg je stvorio Guido van Rossum 1990. godine (prva javna inačica objavljena je u veljači 1991. godine),[1] ime dobiva po televizijskoj seriji Monty Python's Flying Circus. Po automatskoj memorijskoj alokaciji, Python je sličan programskim jezicima kao što su Perl, Ruby, Smalltalk itd. Python dopušta programerima korištenje nekoliko stilova programiranja. Objektno orijentirano, strukturno i aspektno orijentirano programiranje stilovi su dopušteni korištenjem Pythona te ova fleksibilnost čini Python programski jezik sve popularnijim. Python se najviše koristi na Linuxu, no postoje i inačice za druge operacijske sustave.

PovijestUredi

Python je stvoren krajem 1980-ih.[2] Osmislio ga je Guido van Rossum u Centrum Wiskunde & Informatica (CWI) u Nizozemskoj, kao naslijednika ABC programskog jezika koji je inspiriran SETL-om,[3] koji je sposoban za rukovanje iznimkama i povezivanje sa Amoeba operativnim sustavom. Implementacija Pythona krenula je u prosincu 1989. godine. Van Rossum je snosio odgovornost za projekt kao vodeći 'developer' sve do 12. srpnja 2018. godine kad je najavio svoj 'stalni odmor' od svojih obaveza kao jedan od Pythonovih vodećih ljudi. Nakon što je otišao, glavni Pythonovi developeri napravili su upravno vijeće za vođenje projekta, čiji članovi su: Barry Warsaw, Brett Cannon, Carol Willing, Thomas Wouters i Pablo Galindo Salgado.[4]


Python 2.0 objavljen je 16. listopada 2000. godine s mnogim glavnim novim značajkama, uključujući '' cycle-detecting garbage collector'' i podršku za Unicode.[5] Python 3.0 objavljen je 3. prosinca 2008. To je bila velika revizija jezika koja nije potpuno unatrag kompatibilna. Mnoge njegove značajke vraćene su u verzije Python 2.6.x i 2.7.x. Izdanja Pythona 3 uključuju pomoćni program 2to3, koji automatizira (barem djelomično) prijevod Python 2 koda na Python 3. Datum završetka Pythona 2.7 prvotno je bio određen za 2015. godinu, a zatim je odgođen za 2020. godinu zbog zabrinutosti da se veliki dio postojećeg koda ne može lako prenijeti na Python 3. Za njega neće biti objavljene više sigurnosne zakrpe niti druga poboljšanja. S isteklim vijekom trajanja Pythona 2, podržani su samo Python 3.6.x i noviji.


Python 3.9.2 i 3.8.8 ubrzani su jer su sve verzije Pythona (uključujući 2.7) imale sigurnosnih problema, što je dovelo do mogućeg daljinskog izvršenja koda i trovanja web cachea.[6]

RazvojUredi

Razvoj Pythona u velikoj se mjeri odvija kroz postupak prijedloga poboljšanja Pythona (PEP), primarnog mehanizma za predlaganje velikih novih značajki, prikupljanje doprinosa zajednice o pitanjima i dokumentiranje odluka o dizajnu Pythona. Python stil kodiranja pokriven je PEP -om 8. Izvanredne PEP -ove pregledavaju i komentiraju zajednica Python i upravno vijeće.[7]

Poboljšanje jezika odgovara razvoju implementacije CPython reference. Popis adresa python-dev primarni je forum za razvoj jezika. O posebnim pitanjima raspravlja se u Roundup trag bugu koji se nalazi na bugs.python.org. Razvoj se izvorno odvijao na vlastitom spremištu izvornog koda koji pokreće Mercurial, sve dok se Python nije preselio na GitHub u siječnju 2017.


Javna izdanja CPythona dolaze u tri vrste, od kojih se dio broja verzije povećava:

  • Unatrag nekompatibilne verzije, gdje se očekuje lomljenje koda i potrebno ga je ručno prenijeti. Prvi dio broja verzije se povećava. Ova se izdanja događaju rijetko - verzija 3.0 objavljena je 8 godina nakon 2.0.
  • Veća ili "značajna" izdanja događala su se otprilike svakih 18 mjeseci, ali očekuje se da će se usvajanje godišnje kadencije izdanja koja počinje s Pythonom 3.9 događati jednom godišnje. U velikoj su mjeri kompatibilni, ali uvode nove značajke. Drugi dio broja verzije se povećava. Svaku veću inačicu podržavaju ispravci programskih pogrešaka nekoliko godina nakon objavljivanja.
  • Izdanja programskih pogrešaka, koja ne uvode nove značajke, pojavljuju se otprilike svaka 3 mjeseca i nastaju kada je od posljednjeg izdanja uzvodno popravljen dovoljan broj programskih pogrešaka. Sigurnosne ranjivosti također su zakrpljene u ovim izdanjima. Treći i posljednji dio broja verzije se povećava.[8]

Mnogi alfa, beta i kandidati za izdanje također su objavljeni kao pregledi i za testiranje prije konačnih izdanja. Iako postoji okvirni raspored za svako izdanje, oni često kasne ako kod nije spreman. Pythonov razvojni tim prati stanje koda pokretanjem velikog paketa jediničnih testova tijekom razvoja.[9]


Glavna akademska konferencija o Pythonu je PyCon. Postoje i posebni programi za mentorstvo Pythona, poput Pyladies. Pythons 3.10 odbacuje wstr (uklonit će se u Pythonu 3.12; što znači da se Python proširenja do tada moraju izmijeniti), a također planira dodati jezik koji odgovara uzorcima.[10]

Usporedba Pythona sa ostalim jezicimaUredi

Unutar IT zajednice česte su kritike Pythona na račun njegove sporosti. Pošto je Python interpreterski jezik, programi napisani u njemu vrše se malo sporije za usporedbu od kompajlerskih jezika, kao što su C, C++ i slični. Međutim, unatoč toj brzinskoj manjkavosti, u industriji se Python poprilično koristi (ponajviše kao back end programski jezik).

Python se često uspoređuje sa Javom. Oboje su interpreterski jezici, i oboje imaju gotovo nikakvu podršku za višejezgrovno izvođenje programa, pošto i Python i Java koriste samo jednu procesorsku jezgru. Java se kao jezik češće primjenjuje u izradi mobilnih aplikacija i interaktivnog web sadržaja, dok je Python gospodar PC svijeta. Što se tiče brzine izvođenja programa, Java i Python su približno jednaki.

UvlačenjeUredi

Python koristi uvlačenje kao metodu razlikovanja programskih blokova, tj. ne koristi vitičaste zagrade ili ključne riječi kao većina programskih jezika. Povećanje uvlačenja znači da dolazi novi, ugniježđeni blok, dok smanjenje označava kraj trenutnog bloka.

Ključne riječi i kontrola tokaUredi

U Pythonove ključne riječi spadaju:

  • if izraz, koji izvršava određeni blok koda pod nekim uvjetom, zajedno s else i elif (else-if varijanta).
  • for izraz, koji iterira kroz iterabilan objekt i svaki element upisuje u lokalnu varijablu koja se koristi u pridruženom bloku.
  • while izraz, koji izvršava određeni blok koda sve dok je njegov uvjet istinit
  • try izraz, koji omogućava da iznimke, koje su bačene u bloku koda kojeg try obuhvaća, budu uhvaćene i obrađene u except bloku
  • class izraz, kojim se deklarira klasa (u objektno orijentiranom programiranju)
  • def izraz, koji definira funkciju ili metodu
  • assert izraz, koji se koristi pri debuggiranju kako bi se provjerilo vrijede li određeni uvjeti
  • import izraz, koji se koristi pri uključivanju dodatnih modula

PrimjerUredi

Nekoliko primjera koji pokazuju sintaksu Pythona (inačica 3.x):

#komentar u Pythonu
#na ekran se ispiše "Hello World"
print ("Hello World")

#primjer liste (polja):
brojevi = [1, 8, 9, 3, 10, 44, 78, 33, 100]

#ispis prvog elementa u listi brojevi, u ovom slučaju "1"
print (brojevi[0])

#primjer ispitivanja uvjeta:
a = 5
b = 3
if a > b:
    print ("a je veće od b")
else:
    print ("b je veće od a")

#primjer iteriranja kroz listu i ispis njenih elemenata:
for broj in brojevi:
    print(broj)

#primjer funkcije koja ispisuje "Hello World"
def Hello():
    print ("Hello World")

Primjer klase:

class Hello():
    #konstruktor bilo koje klase se definira kao def __init__(self):
    def __init__(self):
        pass
    #definicija metode pozdrav()
    def pozdrav(self):
        print ("Hello World")

IzvoriUredi

  1. A Brief Timeline of Python, Guido van Rossum, 20. siječnja 2009., python-history.blogspot.fr, pristupljeno 23. kolovoza 2012.
  2. Venners, Bill. The Making of Python
  3. van Rossum, Guido. SETL (was: Lukewarm about range literals)
  4. PEP 13 -- Python Language Governance
  5. What's New in Python 2.0
  6. CVE - CVE-2021-23336
  7. PEP 1 – PEP Purpose and Guidelines
  8. PEP 6 – Bug Fix Releases
  9. Python Buildbot
  10. PEP 634 -- Structural Pattern Matching: Specification

Vanjske povezniceUredi