Kako pozvati funkciju u Python (Primjer)
โก Pametni saลพetak
Funkcije u Python su blokovi koda za viลกekratnu upotrebu koji se pokreฤu kada se pozovu, definirani naredbom def. Prihvaฤaju argumente, vraฤaju vrijednosti i oslanjaju se na dosljedno uvlaฤenje za grupiranje naredbi koje pripadaju svakoj funkciji.

ล to je funkcija u Python?
A Funkcija u Python je dio koda koji se izvrลกava kada se na njega referencira. Koristi se za koriลกtenje koda na viลกe mjesta u programu. Takoฤer se naziva metoda ili procedura. Python nudi mnoge ugraฤene funkcije poput print(), input(), compile() i exec(), ali vam takoฤer daje slobodu stvaranja vlastitih funkcija.
Kako definirati i pozvati funkciju u Python
Funkcija u Python definirana je naredbom "def" nakon koje slijedi naziv funkcije i zagrade ( () ).
Primjer:
Definirajmo funkciju pomoฤu naredbe โdef func1():โ i pozovimo funkciju. Izlaz funkcije bit ฤe โUฤim Python funkcija".
Poziv funkcije func1() poziva naลกu def func1(): i ispisuje naredbu โUฤim Python funkcija Nema.โ
Postoji skup pravila u Python programiranje za definiranje funkcije.
- Svi argumenti ili ulazni parametri trebaju biti smjeลกteni unutar ovih zagrada.
- Prva naredba funkcije moลพe biti opcionalna naredba - docstring ili dokumentacijski niz funkcije.
- Kod unutar svake funkcije poฤinje dvotoฤkom (:) i treba biti uvuฤen (razmak).
- Naredba return (izraz) izlazi iz funkcije, opcionalno vraฤajuฤi vrijednost pozivatelju. Naredba return bez argumenata ista je kao i return None.
Znaฤaj uvlaฤenja (razmaka) u Python
Prije nego ลกto se upoznamo s Python funkcije, vaลพno je da razumijemo pravilo uvlaฤenja koje treba deklarirati Python funkcije, a ova pravila se primjenjuju i na druge elemente Python kao i, kao ลกto je deklariranje uvjeta, petlji ili varijabli.
Python slijedi odreฤeni stil uvlaฤenja kako bi definirao kod. Buduฤi da Python Funkcije nemaju eksplicitni poฤetak ili kraj poput vitiฤastih zagrada koje bi oznaฤavale poฤetak i kraj funkcije, veฤ se moraju oslanjati na ovo uvlaฤenje. Ovdje ฤemo uzeti jednostavan primjer s naredbom "print". Kada napiลกemo funkciju "print" odmah ispod retka def func1():, prikazat ฤe se "greลกka uvlaฤenja: oฤekivao se uvuฤeni blok".
Sada, kada dodate uvlaฤenje (razmak) ispred funkcije "print", trebalo bi se ispisati kako se oฤekuje.
Barem jedno uvlaฤenje je dovoljno da bi vaลก kod uspjeลกno radio. No, kao najbolja praksa, preporuฤljivo je ostaviti oko 3-4 mjesta uvlaฤenja za pozivanje vaลกe funkcije.
Takoฤer je potrebno da prilikom deklariranja uvlaฤenja zadrลพite isto uvlaฤenje za ostatak koda. Na primjer, na donjoj snimci zaslona, โโkada pozovemo drugu naredbu โjoลก uvijek u funkciji1โ i ona nije deklarirana odmah ispod prve naredbe ispisa, prikazat ฤe se pogreลกka uvlaฤenja: โunindent se ne podudara ni s jednom drugom razinom uvlaฤenja.โ
Sada, kada primijenimo isto uvlaฤenje za obje naredbe i poravnamo ih u istu liniju, to daje oฤekivani izlaz.
Kako funkcionira povratna vrijednost?
Naredba za povratak u Python odreฤuje koju vrijednost vratiti pozivatelju funkcije. Razumijemo to sljedeฤim primjerom.
Korak 1) Funkcija ne vraฤa niลกta
Ovdje vidimo kada funkcija ne "vraฤa". Na primjer, ลพelimo kvadrat broja 4, a odgovor bi trebao biti "16" kada se kod izvrลกi. To se vraฤa kada jednostavno koristimo kod "print x*x", ali kada pozovete funkciju "print square", ona vraฤa "None" kao izlaz. To je zato ลกto se kada pozovete funkciju, rekurzija ne dogaฤa i funkcija pada na kraju funkcije. Python vraฤa "None" ako se vrijednost nalazi izvan kraja funkcije.
Korak 2) Zamijenite naredbu ispisa naredbom dodjeljivanja
Kako bismo ovo razjasnili, naredbu ispisa zamjenjujemo naredbom dodjeljivanja. Provjerimo izlaz.
Kada pokrenete naredbu โprint square (4)โ, ona zapravo vraฤa vrijednost objekta. Buduฤi da ovdje nemamo nikakvu specifiฤnu funkciju za izvrลกavanje, vraฤa โNoneโ.
Korak 3) Koristite funkciju 'return' i izvrลกite kod
Sada ฤemo vidjeti kako dohvatiti izlaz pomoฤu naredbe "return". Kada koristite funkciju "return" i izvrลกite kod, dobit ฤete izlaz "16".
Korak 4) Pokrenite naredbu 'print square'
Funkcije u Python su sami objekt, a objekt ima neku vrijednost. Ovdje ฤemo vidjeti kako Python tretira objekt. Kada pokrenete naredbu "print square", vraฤa vrijednost objekta. Buduฤi da nismo proslijedili nikakav argument, nemamo nikakvu specifiฤnu funkciju za izvrลกavanje ovdje, pa vraฤa zadanu vrijednost (0x021B2D30) koja je lokacija objekta. U praksi Python program, vjerojatno vam to nikada neฤe trebati.
Argumenti u funkcijama
Argument je vrijednost koja se prenosi funkciji kada se pozove.
Drugim rijeฤima, na strani pozivanja to je argument, a na strani funkcije to je parametar.
Da vidimo kako Python argumenti funkcioniraju.
Korak 1) Argumenti su deklarirani u definiciji funkcije. Prilikom pozivanja funkcije, moลพete proslijediti vrijednosti za te argumente kao ลกto je prikazano u nastavku.
Korak 2) Za deklariranje zadane vrijednosti za argument, dodijelite mu vrijednost u definiciji funkcije.
Primjer: x nema zadanu vrijednost. Zadana vrijednost y = 0. Kada prilikom pozivanja funkcije mnoลพenja navedemo samo jedan argument, Python dodjeljuje zadanu vrijednost x-u dok keeping vrijednost y=0. Stoga je mnoลพak x*y=0.
Korak 3) Ovaj put ฤemo promijeniti vrijednost na y=2 umjesto zadane vrijednosti y=0, a izlaz ฤe se vratiti kao (4ร2)=8.
Korak 4) Takoฤer moลพete promijeniti redoslijed kojim se argumenti prosljeฤuju u PythonOvdje smo obrnuli redoslijed vrijednosti x i y na x=4 i y=2.
Korak 5) Viลกe argumenata moลพe se predati i kao niz. Ovdje u primjeru pozivamo viลกe argumenata (1,2,3,4,5) pozivom funkcije (*args).
Primjer: Viลกestruke argumente smo deklarirali kao brojeve (1,2,3,4,5); kada pozovemo funkciju (*args), ona ispisuje izlaz kao (1,2,3,4,5).
Savjet:
- In Python 2.7, preoptereฤenje funkcija nije podrลพano. Preoptereฤenje funkcija je moguฤnost stvaranja viลกe metoda istog imena s razliฤitom implementacijom. Preoptereฤenje funkcija je u potpunosti podrลพano u Python 3.
- Postoji priliฤna zbrka izmeฤu metoda i funkcija. Metode u Python su povezane s instancama objekata, dok funkcije nisu. Kada Python poziva metodu, veลพe prvi parametar tog poziva na odgovarajuฤu referencu objekta. Jednostavnim rijeฤima, samostalna funkcija u Python je "funkcija", dok je funkcija koja je atribut klase ili instance "metoda".
Ovdje je kompletan Python 3 kod
#define a function
def func1():
print ("I am learning Python function")
print ("still in func1")
func1()
def square(x):
return x*x
print(square(4))
def multiply(x,y=0):
print("value of x=",x)
print("value of y=",y)
return x*y
print(multiply(y=2,x=4))
Ovdje je kompletan Python 2 kod
#define a function
def func1():
print " I am learning Python function"
print " still in func1"
func1()
def square(x):
return x*x
print square(4)
def multiply(x,y=0):
print"value of x=",x
print"value of y=",y
return x*y
print multiply(y=2,x=4)














