Upoznavanje sa Python-om i prvi kodovi

Pytho zoomKao što sam napisao u prethodnom postu moje predznanje o Python-u ravno je nuli. Put od hiljadu milja počinje se prvim korakom. Ja sam uspešno zakoračio tj. instalirao sam Python ali šta dalje? Odlučio sam da se najpre upoznam sa osnovnim informacijama o samom jeziku,  zatim da se upoznam sa sintaksom i na kraju da napišem jednostavan primer kao dokaz da sam naučio nešto novo. Ostajem pri svojoj odluci da sve što naučim podelim na ovom blogu jer smatram da znanje treba širiti a stečeno iskustvo podeliti sa ljudima sličnih interesovanja. Ako barem jednom čoveku pomognem, ili mu se ovo učini interesantnim, smatraću da moj trud nije bio uzaludan. Od literature najviše koristim zvaničnu dokumentaciju i besplatnu, javno dostupno, knjigu Dive into Python 3.

Šta je Python?

Python je razvio holandski programer Guido van Rossum. Zanimljivo je da samo ime nema nikakve veze sa pitonom već potiče od čuvene britanske televizijske komedije Monty Python’s Flying Circus . Autor je ovim nazivom želeo da istakne  osnovni cilj pri pravljenju novog jezika a to je da samo programiranje postane jednako zabavno kao i serija čije ime nosi. Na zvaničnom sajtu, www.python.org, piše da dovođenje u vezu Python-a sa čuvenim komedijašima ne samo da je dozvoljeno nego se i ohrabruje. Osnovna ideja jezika je da programer bude u centru svega i da mu se, što je više moguće, olakša svakodnevno programiranje. Ono što mi se posebno svidelo u PHP-u to je zajednica i njena spremnost da pomogne što je i ovde slučaj budući da postoji veliki broj javno dostupnih, slobodnih, biblioteka koje su postavili upravo ljudi iz zajednice za raznorazne namene.

Python je objektno orjentisani skript jezik. Kôd se ne prevodi već se izvršava direktno u intepreteru. Za vreme izvršenja izvorni kod se prevodi u bytecode koji se zatim interpretira u interpreteru. Dizajniran je da bude lako čitljiv i razumljiv budući da koristi dosta engleskih fraza i, u poređenju sa drugim jezicima, ima manje sintaksnih pravila. Portabilan je što znači da se njegov kôd može izvršiti na bilo kojoj vrsti platforme. Podržan je i rad sa većinom sistema za upravljanje bazama podataka.

The Zen of Python

Tim Peters, jedan od vodećih Python gurua, definisao je Zen Python-a koji se može definisati kao filozofija koja prožima ceo jezik. Te principe prenosim bez prevođenja:

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

Od verzije Python-a 2.1.2 ukoliko želite da se podsetite ovih principa dovoljno je da u shell ukucate

import this

Izbor razvojnog okruženja

Za razvoj aplikacija od samog početka koristim Eclipse. Koristio sam ga i za Coldfusion i za PHP i smatram ga odličnim alatom. Budući da radim na Ubuntu i da mi lap top ima 8GB RAM memorije nemam nikakvih problema u radu. Inače je poznato da je Eclipse večito gladan memorije. Za Pyton postoji plugin – PyDev. Instrukcije za instalaciju ovog plugina možete naći ovde (za one koji bolje poznaju instalaciju Eclipse plugina direktna adresa je http://pydev.org/updates). Mislim da je u ovoj fazi ovo predstavlja dobar izbor jer ja ne znam još uvek šta da očekujem od razvojnog okruženja. Nakon instalacije PyDev-a potrebno je da se podesiti interpreter u opciji Window -> Preference->Pydev->Interpreter Python. Za Windows korisnike ovde je potrebno da se unese putanja do fajla python.exe dok oni koji koriste Ubuntu i instalirali su Python verziju 3.3 (kao i ja) potrebno je da unesu /usr/local/bin/python3.3. Napravio sam prvi projekat, koristeći wizzard, i okviru njega sam kreirao novi modul. U njemu ću da otkucam svoj prvi kod u Python-u.

Moji prvi kodovi

Posle ovoliko pisanja došlo je vreme da se stvari konkretizuju. Napisaću svoju prvi Python program. Biće to jedno od remek dela praktično neupotrebljivih kodova ali idealnih da bi se naučile odlike jednog jezika. Napraviću funkciju koja sabira dva broja a zatim je pozvati kako bi njen rezultat prikazao na ekranu

def add(firstNumber, secondNumber):
    return firstNumber + secondNumber
numberFirst = 19
numberSecond = 81
print(add(numberFirst, numberSecond))

Dakle kada pokrenemo ovaj moj prvenac (desni klik pa Run As->Python Run) kao rezultat dobijemo broj 100. Šta sam naučio iz ovog primera? Kao prvo nema nikakve oznake za kraj nekog iskaza (funkcija se završava sa return, promenljivim se jednostavno dodelila vrednost). Nisam morao da dodeljujem tip promenljivoj već sam joj odmah dodelio vrednost tj. baš kao u PHP. Oba jezika ova jezika pripadaju grupi tzv. dinamički tipiziranih jezika (dynamically typed language). Blokovi koda (kao npr telo funkcije) definišu se po uvučenosti koda((eng indent). Dakle ne postoje vitičaste zagrade kao u PHP-u ( { } ) već se blokovi definišu uvučenošću dela koda. Na ovaj način uređenost koda je neophodna za ispravno izvršenje koda jer u Python-u sledeća dva bloka koda ne daju isti rezultat.

print('I started print in main program')
def printSomething():
    print('I started print in function')
    print('I love PHP')
print('I love Python')
printSomething()
print('I started print in main program')
def printSomething():
    print('I started print in function')
    print('I love PHP')
    print('I love Python too')
printSomething()

U prvom slučaju izkaz print(‘I love Python’) nije deo funkcije i izvršava se neposredno posle iskaza print(‘I started print in main program’) dok je u drugom slučaju deo funkcije i izvršava se u okviru funkcije.

Python funkcije

Za funkcije filozofija je krajnje jednostavna – kada ti treba funkija samo je definiši. Svaka funkcija sastoji se od ključne reči def praćene nazivom i listom parametara odvojenih zarezom. Funkcija, ukoliko se izvrši, uvek vraća neku vrednost u suprotnom će vratiti vrednost None što zapravo predstavlja vrednost null. Telo funkcije započinje sa dvotačkom i sve što se nalazi ispod toga a nalazi se u istom nivou uvučenosti predstavlja telo funkcije (u ovom primeru uvučenost je jedan tab). Dakle funkciju možemo završiti ili ključnom reči return ili tako što ćemo indent nivo vratiti za jedan tab. Parametrima se može dodeliti podrazumevana vrednost. Pri pozivu funkije parametre možemo prosledjivati po vrednostima onim redom kako smo definisali u funkciji a možemo ih pozivati i direktno po nazivu nezavisno od redosleda definisanja. Na taj način ne moramo popunjavati sve parametre u funkcijama koje imaju više parametara već samo po nazivu one koje nam trebaju. Uzmimo kao primer sledeću funkciju:

def printParams(firstParam, secondParam = 0, thirdParam = 0):
    print('First param is', firstParam)
    print('Second param is', secondParam)
    print('Third param is', thirdParam)


Prvi parametar je obavezan dok su preostala dva izborna. Zadatu funkciju možemo ispravno pozvati na sledeće načine:

  • printParams(1) – Obavezujuć parametar je definisan a ostali će uzeti podrazumevanu vrednost
  • printParams(1, 6, 9) – Sva tri parametra su navedena
  • printParams(firstParam = 4, secondParam = 6, thirdParam = 8) – Svi parametri su pozvani po imenu i po redu kako su definisani
  • printParams(thirdParam = 8, firstParam = 4, secondParam = 6) – Svi parametri su pozvani po imenu ali ne po redu kako su definisani. Rezultat je isti kao u prethodnom primeru jer smo parametre pozivali po imenu
  • printParams(11, secondParam = 4, thirdParam = 6) – Prvi parametar je definisan po mestu dok su druga dva po nazivu. Kada se neki parametar zove po nazivu svi parametri nakon njega moraju biti pozvani na isti način
  • printParams(11, thirdParam = 6) – Prvi parametar je definisan po mestu, drugi je izostavljen ali smo treći nazvali po imenu. Budući da drugi parametar ima podrazumevanu vrednost funkcija će se uspešno izvršiti.


Neispravno bi bilo da smo funkciju pozivali na sledeći način:

  • printParams(11, secondParam = 6, 4) – Jednom kada se parametar pozove po imenu svi ostali koji se navode nakon njega moraju takođe da se navedu po imenu
  • printParams(firstParam = 11, 4) – Razlog je isti kao u prethodnom primeru bez obzira što se radi o obaveznom parametru.

Dalji koraci

Poprilično sam zadovoljan kako sam napravio prve korake. Takođe sam zadovoljan izborom programskog jezika za učenje. Puno je novina, zanimljivih i korisnih stvari. Nekima od njih još uvek nije mesto u ovim početnim člancima ali će svakako naći mesto u nekom od sledećih. Do tada nastavljam da radim i da pišem s velikom nadom da ću jednog dana moći sebe nazvati Python programerom.

2 thoughts on “Upoznavanje sa Python-om i prvi kodovi

  1. Vukasin say:

    Praveći prve korake tj. učeći osnove pajtona da li ste prešli pomoću literature ili ste to uspeli zahvaljujući nekim od besplatnih kurseva na internetu. Ako znate za neki kurs koji se ne placa na netu molio bih vas da mi kazete. Unapred HVALA!!!

  2. Vukasin say:

    Da jos da pohvalim da je lepo uradjen uvod za pajton na ovoj stranici!!! 😀 😀 😀

Leave a Reply

Your email address will not be published. Required fields are marked *