![]() |
![]() |
|
FunkcijeDokumentacija funkcije - razlagaV Pythonu definiramo funkcijo takole:
Spremenljivkam Kadar nismo prepričani, kaj določena funkcija dela, si lahko pomagamo
z vgrajeno funkcijo
Poglejmo primer enostavne funkcije, ki sprejme dve števili
Če želimo izvedeti nekaj več o zgornji funkciji, uporabimo spodnji ukaz:
Pozicijski in poimenovani argumenti - razlagaArgumentom, ki smo jih podajali funkcijam v vseh zgornjih primerih, rečemo pozicijski argumenti. Te argumente moramo pri klicu funkcije podati v enakem vrstnem redu, kot smo jih podali pri njeni definiciji. Poleg pozicijskih poznamo tudi poimenovane argumente , ki jim ob definiciji funkcije nastavimo privzete vrednosti. Poglejmo primer funkcije, ki sprejme dva pozicijska argumenta
Kadar želimo funkcijo klicati s privzetimi vrednostmi poimenovanih argumentov,
nam jih ob klicu funkcije ni potrebno navesti. V spodnjem primeru ima
spremenljivka
Poimenovanim argumentom lahko ob klicu funkcije spremenimo vrednosti:
pri čemer nam jih ni potrebno podati v pravilnem vrstnem redu:
Vrednosti lahko spremenimo tudi le nekaterim izmed poimenovanih argumentov,
pri čemer bodo tisti, katerih vrednosti nismo spremenili, obdržali privzete
vrednosti.
Spremenljivka
Poimenovane argumente lahko ob klicu funkcije podajamo na enak način kot
pozicijske, vendar se v tem primeru upošteva njihov vrstni red iz definicije
funkcije. V spodnjem primeru bo spremenljivka
Pozicijske argumente moramo vedno podati pred poimenovanimi! Spodnji klic bo v Pythonu sprožil napako.
*args in **kwargsVčasih potrebujemo funkcijo, ki sprejme zelo veliko število argumentov in si je zato težko zapomniti, kako si argumenti sledijo po vrsti. V takih primerih lahko definiramo funkcijo, ki sprejme poljubno število argumentov. Rezervirana beseda za poljubno število pozicijskih argumentov v Pythonu je *args, rezervirana beseda za poljubno število poimenovanih argumentov pa **kwargs, kjer je zelo pomembno, da pri prvem uporabimo eno zvezdico, pri drugem pa dve zvezdici. Poglejmo primer funkcije, ki sprejme poljubno število pozicijskih in poljubno število poimenovanih argumentov ter jih izpiše na zaslon:
Kot vidimo, se pozicijski argumenti shranijo v terko, poimenovani argumenti pa v slovar. Slovarje in terke bomo obravnavali kasneje, zato se z njimi ne obremenjujte. K tem primerom se lahko brez slabe vesti vrnete potem, ko boste predelali vso snov in osvojili vso potrebno znanje za razumevanje terk in slovarjev. Ker se v tem poglavju razlaga uporabo funkcij, pa so stvari vseeno razložene na tem mestu. Funkcijo, za katero vemo, da bo vedno sprejela dva pozicijska argumenta, ne vemo pa, ali jima bodo sledili še kaki drugi pozicijski argumenti, definiramo na naslednji način:
Zgornjo funkcijo lahko razširimo še za sprejemanje poimenovanih argumentov.
Recimo, da želimo definirati funkcijo, ki bo omogočala vnos pozicijskih
argumentov na enak način kot zgornja funkcija, pri vsakem klicu pa bo imela
dostop tudi do spremenljivk
Anonimne funkcije - razlagaVčasih neko funkcijo potrebujemo le za kratek čas in je zato nima smisla shranjevati v spremenljivko. Definirajmo funkcijo
Zgornja funkcija je shranjena v spremenljivki
kjer beseda Če želimo to funkcijo klicati recimo na številu
Tudi funkcije, ki ne sprejmejo nobenega argumenta, lahko definiramo na anonimen način.
Anonimno funkcijo, ki vedno vrne vrednost
in jo kličemo tako:
Če želimo, lahko funkcijo, ki je zapisana v anonimni obliki, shranimo v spremenljivko:
in jo nato pokličemo na enak način kot bi jo sicer:
Spodaj je podan primer anonimne funkcije, ki sprejme več kot le en argument:
Njen klic izgleda tako:
Anonimne funkcijeV razdelku "Anonimne funkcije - razlaga" si lahko preberete, kaj so anonimne funkcije in kako z njimi delamo v Pythonu. Tu pa rešite osnovno nalogo iz te teme. 1. podnalogaSestavite funkcijo
Uradna rešitevkvadrat = lambda x: x ** 2 Funkcije višjega reda - razlagaFunkcije lahko kot argumente sprejmejo tudi druge funkcije ali pa jih vračajo kot rezultat. Funkcije, ki vračajo funkcijeSpomnimo se funkcije
Zgornja funkcija, zapisana kot je, ni funkcija višjega reda, saj ne sprejema
in niti ne vrača funkcije. Lahko pa jo malenkost spremenimo tako, da bo
namesto vrednosti vračala funkcijo
Funkcija Sedaj ob klicu:
ne dobimo vsote števil
oziroma kar:
Funkcijo
Lahko gremo še korak dlje in tudi funkcijo
oziroma kar:
Funkcije, ki sprejemajo funkcijeRecimo, da želimo definirati funkcijo
Funkcijo
Funkcija
Funkcije višjega redaV razdelku "Funkcije višjega reda - razlaga" si lahko preberete, kaj so funkcije višjega reda in kako delamo z njimi v Pythonu. Tu pa rešite osnovno nalogo iz te teme. 1. podnalogaSestavite funkcijo višjega reda Opomba: V resnici nismo upoštevali, da miš spolno dozori približno v starosti devetih tednov. Brejost traja približno 20 dni, v leglu pa je od tri do osem mladičev. Zgled
Uradna rešitevdef misi(a): """Vrne funkcijo, ki sprejme število tednov t ter vrne a * 2**t.""" return lambda t: a * 2**tMesto objave ob koncu projekta 15.9.2018 |