Kao programer, često ćete se naći u situaciji da ponavljate radnju ili zadatak. To može biti zamorno i dugotrajno, posebno kada radite s velikom ili složenom bazom koda. Njihova automatizacija pomoću funkcija je učinkovitiji pristup obavljanju takvih zadataka. Funkcije vam omogućuju da jednom napišete logiku koda i koristite je bilo gdje u svom programu.

Što je Python funkcija?

U Pythonu, funkcija je blok koda koji se koristi za izvođenje određenog zadatka. Funkciju trebate napisati samo jednom, ali je možete koristiti više puta u svom kodu. Funkcija može uzeti argumente kao ulazne i vratiti izlazne vrijednosti. Ovaj jednostavan program prikazuje funkciju koja izračunava zbroj tri broja:

# Python funkcija za izračunavanje zbroja tri broja

defizračunaj_zbroj(a, b, c):
povratak a+b+c

ispis (izračunaj_zbir(1,2,3)) # vraća 6
ispis (izračunaj_zbir(1000, 300,44)) # vraća 1344
ispis (izračunaj_zbir(12, 4,78)) # vraća 94

U gornjem programu funkcija vraća zbroj triju argumenata. Kada se funkcija pozove više puta, vraća drugačiji izlaz za svaki slučaj. Korisna aplikacija za ovu funkciju bit će aplikacija kalkulatora.

Definiranje funkcije u Pythonu

Python ima mnogo ugrađenih funkcija dostupan programerima za korištenje. Međutim, ove ugrađene funkcije nisu uvijek dovoljne da zadovolje zahtjeve većine projekata. Kako biste zadovoljili prilagođene zahtjeve, morate definirati svoje prilagođene funkcije. Definiranje prilagođenih funkcija uobičajena je praksa u programiranju.

U Pythonu možete definirati prilagođenu funkciju pomoću def ključnu riječ iza koje slijedi naziv vaše funkcije sa zagradom ispred. Evo primjera:

defnaziv_funkcije()

Trebali biste uzeti u obzir ova pravila kada dodjeljujete naziv funkcije u Pythonu:

  • Nazivi funkcija trebaju biti napisani malim slovima.
  • Nazivi funkcija trebaju biti opisni.
  • Koristite podvlake za odvajanje riječi u nazivu funkcije.

Nakon definiranja funkcije, morate napisati logiku za izvođenje željenog zadatka. Na primjer, ova funkcija izračunava površinu trokuta:

# Python funkcija za izračunavanje površine trokuta

defizračunati_površinu_trokuta(osnova, visina):
površina = (baza * visina)/2
povratak područje

ispis (izračunaj_površinu_trokuta(12, 3))

Gornja funkcija definira dva parametra: baza i visina, dijeli njihov umnožak s dva i vraća rezultat kao izlaz. Možete napisati bilo koju logiku koju želite da vaša funkcija obavlja.

Razumijevanje argumenata funkcije

U prethodnim primjerima, funkcije su uzele argumente za izvođenje radnji. Argumenti u ovim primjerima poznati su kao obavezni ili pozicijski argumenti. U Pythonu vaši argumenti mogu biti nešto od sljedećeg:

  • Pozicijski argumenti
  • Argumenti ključnih riječi

Pozicijski argumenti

Pozicijski argumenti moraju se proslijediti ispravnim redoslijedom definicije. Na primjer, ako definirate funkciju s parametrima a, b, i c, morate proslijediti vrijednosti za ove parametre u skladu s tim kada ih pozivate. Pogledajmo prethodni primjer:

# Python funkcija za izračunavanje zbroja tri broja

defizračunaj_zbroj(a, b, c):
povratak a+b+c

ispis (izračunaj_zbir(1,2,3)) # vraća 6
ispis (izračunaj_zbir(1000, 300,44)) # vraća 1344
ispis (izračunaj_zbir(12, 4,78)) # vraća 94

U gornjem programu, izračunaj_zbir() funkcija uzima tri argumenta kad god je pozovemo. Svaki argument predstavlja odgovarajući parametar. U prvom pozivu funkcije, brojevi 1, 2, i 3 predstavljati a, b, i c prema tome.

Parametar je deklariran u definiciji funkcije, dok je argument vrijednost proslijeđena kada pozovete funkciju. Ova vrijednost je prikaz njenog odgovarajućeg parametra.

Pozicijski argumenti su obavezni. Ako ih ne dodate, dobit ćete a TypeError. Sljedeći primjer to pokazuje:

defizračunaj_zbroj(a, b, c):
povratak a+b+c

ispis (izračunaj_zbir(1,2)) # pokreće TypeError

Kada pokrenete gornji program na svom računalu, dobit ćete pogrešku sličnu onoj na slici ispod:

Argumenti ključnih riječi

Argumenti ključnih riječi ne moraju nužno biti proslijeđeni kad god pozovete funkciju. Oni su izborni argumenti i ne moraju slijediti određeni redoslijed. Python nam dopušta korištenje *args i **kwargs za navođenje argumenata ključne riječi.

Osim korištenja *args i **kwargs, također je moguće navesti zadane vrijednosti za vaše argumente. Ako to učinite, nećete dobiti pogrešku ako zaboravite dodati vrijednost prilikom pozivanja funkcije. Ovaj primjer daje ilustraciju:

defizračunaj_zbroj(a, b, c=3):
povratak a+b+c

ispis (izračunaj_zbir(1,2)) # vraća 6

U gornjem programu, kada izračunaj_zbir() zove se, nema argumenta za c; to neće utjecati na program jer c već ima zadanu vrijednost. Možete navesti zadane vrijednosti za onoliko argumenata koliko želite, ali pazite da to učinite mudro.

Koristite funkcije za organiziranje svog koda

Funkcije su korisne za organiziranje vašeg koda, čineći ga čitljivijim i učinkovitijim. Pomoću funkcija možete rastaviti svoj kod na manje dijelove koji se mogu višekratno koristiti i koje je lakše razumjeti i održavati. Osim toga, ako trebate napraviti promjene u svom kodu, trebate modificirati samo potrebnu funkciju, a ne cijelu bazu koda.