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: