Uvod u jezik PYTHON

(priručnik za  predmet "Skript jezici")


© Matematički fakultet

Miljana Mladenović, Duško Vitas

O Python-u
Instalacija
Sintaksa jezika Python
Osnovne osobine
Službene reči
Operatori i njihovi prioriteti
Osnovne algoritamske strukture
Blok naredbi
if struktura
while struktura
Iskazi: break, continue, pass
Tipovi podataka u Python-u
Osnovni i ugradjeni tipovi
Brojevi
Konverzija formata
Neke matematičke funkcije
Neke random funkcije
Niske
Neke funkcije nad niskama
Formatiranje niski
Liste
Torke
Osnovni izrazi sa torkama
Rečnici
Skupovi
Operacije nad skupovima
Datoteke
Funkcije modula os za rad sa datotekama
Funkcije modula os za rad sa folderima
Izuzeci
Funkcije
Moduli
Paketi
Klase
Regularni izrazi
Baze podataka
Primeri u Netbeans-u

Funkcije

   

U Python-u funkcija je blok naredbi formiran kao posebna celina koji se može pozivati više puta iz programa čime se postiže optimalnost koda, bolja čitljivost i višestrika upotreblji-vost. Postoje brojne ugrađene (built-in) funkcije, ali korisnik može kreirati i sopstvene.

   

Korisnički definisane funkcije:

·                počinju ključnom reči def iza koje je ime funkcije i par malih zagrada ( )

·                ulazni parametri navode se unutar zagrada ( )

·                blok naredbi u funkciji počinje oznakom dvotačke ( : )

·                opciono, prva naredba u funkciji je dokumentaciona niska same funkcije (docstring)

·                 funkcija može pozivaocu vratiti neku vrednost i to se postiže pozivom naredbe

return [expression]. Ako funkcija ne vraća vrednost, onda naredba return nema argumenata.

   

Definicija funkcije:

def imeFunkcije( param1, param2,...):

     "docstring "

     ... telo funkcije

     return [<povratna_vrednost>]

   

Poziv funkcije: navodi se ime funkcije i prosleđuju stvarni parametri, strogo vodeći računa o redosledu, broju i tipu u odnosu na definiciju same funkcije. Ako funkcija vraća vrednost, ona se može preuzeti u pozivajućem programu.

def pozdrav(ime):  #definicija funkcije

    print "Zdravo, %s!" %ime

    return

   

#poziv funkcije

>>> imePrimaoca=raw_input("Unesi svoje ime:")

>>> pozdrav(imePrimaoca)

Unesi svoje ime:Miljana

Zdravo, Miljana!

   

Prenos parametara funkciji: u Python-u se svi parametri prenose po referenci, što znači da promena vrednosti parametra unutar funkcije prouzrokuje njegovu promenu i izvan.

#definicija funkcije

def dodajUlistu(clan, lista):

    lista.append(clan)

    return lista

   

# poziv funkcije

clan=""

lista=[]

while clan != "N":

    clan=raw_input("unesi novi element liste: ")

    if clan != "N":

       dodajUlistu(clan,lista)

       print "unutar ", lista

print "izvan", lista

 

Broj ulaznih parametara može biti promenljiv. Oznaka * ispred naziva ulaznog argumenta ukazuje na njegovu promenljivu prirodu.

   

def stampaUlaznihArgumenata( arg1, *promenljivaLista ):

   "Stampa ulaznih argumenata"

   print "Unutar: "

   print "arg1=",arg1

   for arg2 in promenljivaLista:

      print "arg2=", arg2

   return;

   

# u glavnom programu

stampaUlaznihArgumenata ( 10 );       #arg1 se zadaje, a promenljiva lista je #dužine nula (0) "

stampaUlaznihArgumenata ( 1, 2, 3 ); #arg1 se zadaje, a promenljiva lista  je #dužine 2  "

   

Anonimne funkcije:

ne kreiraju se uz pomoć ključne reči def već lambda. To su male neimenovane funkcije koje mogu imati proizvoljan broj ulaѕnih parametara, ali samo jednu izlaznu vrednost u formi izraza. Može pristupati samo svojim lokalno definisanim promenljivama i promenljivama iz globalnog prostora imena. Ne može sadržati komande niti višestruke izraze već jedan kojim vraća izračunatu vrednost. Liče na inline naredbe u  C i C++ .

lambda [arg1 [,arg2,.....argn]]:expression

   

prosek = lambda arg1, arg2: (arg1 + arg2)/2; #definiše se funkcija

   

#u programu

a=input("unesi prvi broj ")

b=input("unesi drugi broj ")

print "prosek brojeva a i b je  : ", prosek( a, b )

unesi prvi broj 23.45

unesi drugi broj 36.55

prosek brojeva a i b je  :  30.0

   

Oblast važenja promenljivih:

može biti globalnog ili lokalnog karaktera. Sve promenljive definisane unutar funkcije su promenljive lokalnog karaktera kojima se može pristupiti samo iz same funkcije. Njihove vrednosti mogu postati dostupne glavnom programu jedino pomoću  return klauzule. Globalne promenljive definisane su u programu i može im se pristupiti iz pozivajuće funkcije preko  liste ulaznih parametara ili direktno (unutar funkcije globalna promenljiva mora se deklarisati ključnom reči global). Ako je promenljiva sa istim nazivom definisana na globalnom nivou i unutar funkcije, u samoj funkciji lokalna promenljiva prekriće globalnu.

   

suma = 0; # globalna promenljiva

def sumaF( *arg ):

   suma=0;  # lokalna promenljiva

   for sabirak in arg:

       suma = suma + sabirak

   print "Unutra suma= ", suma # lokalna promenljiva

   return suma;  # vraca se vrednost lokalne promenljive,

                 # ali je u gl. programu niko ne pruzima

   

# poziv funkcije sumaF u gl.programu

sumaF( 10, 20, 30, 40 );

print "Izvan suma= : ", suma

Unutra suma=  100

Izvan suma= :  0

   

#print "oblast vazenja promenljivih -upotreba  globalne  promenljive unutar funkcije"

prosek = 0; # globalna promenljiva

print "pre poziva funkcije prosek=",prosek

def prosekF( *arg ):

   i=0

   global prosek

   for sabirak in arg:

       i += 1

       prosek = prosek + sabirak

   prosek = 1.0 * prosek / i

   return ;  # ne vraca se vrednost lokalne promenljive,

             # vracena vrednost je u globalnoj promenljivoj

# poziv funkcije prosekF  u gl.programu

prosekF( 10, 20, 30, 40 );

print "posle poziva funkcije prosek=", prosek

   

pre poziva funkcije prosek= 0

posle poziva funkcije prosek= 25.0

   

 

Beograd, novembar 2010.