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.

  • ๐Ÿงฉ def izjava: Funkcija se definira s def, imenom i zagradama, nakon ฤega slijedi dvotoฤka koja otvara uvuฤeni blok naredbi.
  • ๐Ÿ“ž Pozivanje funkcija: Pisanje imena funkcije nakon kojeg slijede zagrade pokreฤ‡e njezin kod, tako da se ista logika moลพe ponovno koristiti mnogo puta.
  • โŒจ๏ธ uvlaฤenje: Python grupira tijelo funkcije konzistentnim uvlaฤenjem umjesto zagrada, pa nedostajuฤ‡i razmak izaziva IndentationError.
  • ๐ŸŽฏ argumenti: Vrijednosti proslijeฤ‘ene unutar zagrada postaju parametri, a zadane vrijednosti ili kljuฤni argumenti ฤine svaki poziv fleksibilnim.
  • โ†ฉ๏ธ Povratne vrijednosti: Naredba return vraฤ‡a rezultat pozivatelju; bez nje, funkcija vraฤ‡a None.
  • ๐Ÿค– AI pomoฤ‡: AI asistenti poput GitHub Copilota generiraju kosture funkcija, argumente i docstringove iz kratkog prompta.

Kako pozvati funkciju u Python

ล 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".

Definirajte i pozovite funkciju u Python

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

Definirajte i pozovite funkciju u Python

Sada, kada dodate uvlaฤenje (razmak) ispred funkcije "print", trebalo bi se ispisati kako se oฤekuje.

Definirajte i pozovite funkciju u Python

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.โ€œ

Definirajte i pozovite funkciju u Python

Sada, kada primijenimo isto uvlaฤenje za obje naredbe i poravnamo ih u istu liniju, to daje oฤekivani izlaz.

Definirajte i pozovite funkciju u Python

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.

Definirajte i pozovite funkciju u Python

Korak 2) Zamijenite naredbu ispisa naredbom dodjeljivanja

Kako bismo ovo razjasnili, naredbu ispisa zamjenjujemo naredbom dodjeljivanja. Provjerimo izlaz.

Definirajte i pozovite funkciju u Python

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

Definirajte i pozovite funkciju u Python

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.

Definirajte i pozovite funkciju u Python

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.

Definirajte i pozovite funkciju u Python

Korak 2) Za deklariranje zadane vrijednosti za argument, dodijelite mu vrijednost u definiciji funkcije.

Definirajte i pozovite funkciju u Python

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.

Definirajte i pozovite funkciju u Python

Korak 3) Ovaj put ฤ‡emo promijeniti vrijednost na y=2 umjesto zadane vrijednosti y=0, a izlaz ฤ‡e se vratiti kao (4ร—2)=8.

Definirajte i pozovite funkciju u Python

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.

Definirajte i pozovite funkciju u Python

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

Definirajte i pozovite funkciju u Python

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)

Pitanja i odgovori

Da. A Python Funkcija moลพe vratiti viลกe vrijednosti odvajajuฤ‡i ih zarezima nakon kljuฤne rijeฤi return. Python pakira ih u tuple, koji pozivatelj moลพe raspakirati u odvojene varijable, na primjer a, b = func().

*args skuplja dodatne pozicijske argumente u tuple, dok **kwargs skuplja dodatne kljuฤne argumente u rjeฤnik. Oba omoguฤ‡uju funkciji da prihvati varijabilan broj ulaza, a nazivi args i kwargs su samo konvencija, a ne zahtjev.

Docstring je niz znakova koji se postavlja kao prva naredba unutar funkcije kako bi se dokumentiralo ลกto ona radi. Napisuje se u trostrukim navodnicima i moลพe se proฤitati za vrijeme izvoฤ‘enja putem atributa funkcije __doc__ ili funkcije help().

Lambda je mala anonimna funkcija definirana u jednom retku s kljuฤnom rijeฤi lambda umjesto def. Odgovara kratkoj, jednokratnoj logici koja se prosljeฤ‘uje funkcijama kao ลกto su map(), filter() i sorted(). Pogledajte ovo lambda funkcija vodiฤ.

Da. Funkcija koja poziva samu sebe je rekurzivna funkcija. Rekurzija rjeลกava probleme koji se dijele na manje sliฤne podprobleme, poput faktorijala. Svakoj rekurzivnoj funkciji potreban je osnovni sluฤaj koji zaustavlja pozive, inaฤe Python izaziva greลกku rekurzije (RecursionError).

Lokalna varijabla se stvara unutar funkcije i postoji samo dok se ta funkcija izvrลกava. Globalna varijabla se definira izvan svih funkcija i vidljiva je svugdje. Da biste promijenili globalnu varijablu unutar funkcije, prvo je deklarirajte kljuฤnom rijeฤi global.

GitHub Copilot predlaลพe cijelo tijelo funkcije na temelju njenog naziva ili kratkog komentara, ukljuฤujuฤ‡i parametre, povratne naredbe i dokumentacijske nizove. Takoฤ‘er predlaลพe rukovanje rubnim sluฤajevima i testove, omoguฤ‡ujuฤ‡i vam da se usredotoฤite na logiku umjesto na cy.ping standardni def blokovi.

Funkcije organiziraju kod umjetne inteligencije i strojnog uฤenja u korake za viลกekratnu upotrebu kao ลกto su uฤitavanje podataka, predobrada, treniranje i evaluacija. One odrลพavaju eksperimente ฤitljivima i testirajuฤ‡ima, a okviri poput TensorFlowa i scikit-learna otkrivaju veฤ‡inu njihovog ponaลกanja putem dobro imenovanih funkcija koje pozivate.

Saลพmite ovu objavu uz: