V Pythonu, ko definiramo funkcije s privzetimi vrednostmi za določene parametre, naj bi imeli svoje argumente nastavljene kot možnost za uporabnika. Uporabniki lahko posredujejo svoje vrednosti ali pa se pretvarjajo, da funkcija uporablja njihove privzete vrednosti, ki so določene.
Na ta način lahko uporabnik pokliče funkcijo bodisi s posredovanjem teh neobveznih parametrov bodisi samo s posredovanjem zahtevanih parametrov.
Obstajata dva glavna načina za posredovanje neobveznih parametrov v pythonu
java zamenja znak v nizu
- Brez uporabe argumentov ključnih besed.
- Z uporabo argumentov ključnih besed.
Prenos brez uporabe argumentov ključnih besed
Nekatere glavne točke, na katere morate biti pozorni pri podajanju brez uporabe argumentov ključnih besed, so:
- Ohraniti je treba vrstni red parametrov, tj. vrstni red, v katerem so parametri definirani v funkciji, je treba ohraniti med klicanjem funkcije.
- Vrednosti za neobvezne parametre je treba posredovati, sicer bo vrglo napako.
- Vrednost privzetih argumentov je mogoče posredovati ali prezreti.
Spodaj je nekaj kod, ki pojasnjujejo ta koncept.
Primer 1:
Python3
# Here b is predefined and hence is optional.> def> func(a, b>=>1098>):> >return> a>+>b> print>(func(>2>,>2>))> # this 1 is represented as 'a' in the function and> # function uses the default value of b> print>(func(>1>))> |
>
>
Izhod:
4 1099>
Primer 2: lahko podajamo tudi nize.
Python3
# Here string2 is the default string used> def> fun2(string1, string2>=>'Geeks'>):> >print>(string1>+> string2)> # calling the function using default value> fun2(>'GeeksFor'>)> # calling without default value.> fun2(>'GeeksFor'>,>'Geeks'>)> |
>
>
Izhod:
GeeksForGeeks GeeksForGeeks>
Prenos z argumenti ključnih besed
Ko so funkcije definirane, so parametri zapisani v obliki datatype ključna beseda-ime. Python torej ponuja mehanizem za klic funkcije z uporabo imena ključne besede za posredovanje vrednosti. To programerju pomaga tako, da se ne nauči zaporedja ali vrstnega reda, v katerem je treba posredovati parametre.
Nekatere pomembne točke, ki si jih moramo zapomniti, so naslednje:
.enako java
- V tem primeru nam ni treba vzdrževati vrstnega reda podajanja vrednosti.
- Med posredovanimi in deklariranimi imeni ključnih besed ne sme biti nobene razlike.
Spodaj je koda za njegovo izvajanje.
Python3
# Here string2 is the default string used> def> fun2(string1, string2>=>'Geeks'>):> >print>(string1>+> string2)> # Thiscan be a way where no order is needed.> fun2(string2>=>'GeeksFor'>, string1>=>'Geeks'>)> # since we are not mentioning the non-default argument> # so it will give error.> fun2(string2>=>'GeeksFor'>)> |
>
>
Izhod:

Kot lahko vidimo, v zgornjem primeru ne zahtevamo vzdrževanja nobenega reda. Prav tako lahko vidimo, da ko poskušamo posredovati samo neobvezne parametre, sproži napako. To se zgodi, ker je izbirne parametre mogoče izpustiti, saj imajo s seboj privzeto vrednost, ne moremo pa izpustiti zahtevanih parametrov (niz1 v zgornjem primeru.) Zato prikaže napako z zastavico: manjka 1 zahtevani argument.
Ta primer bo dal boljši vpogled v zgornjo temo:
Python3
niz v nizu
def> func(a, b, c>=>'geeks'>):> >print>(a,>'type is'>,>type>(a))> >print>(b,>'type is'>,>type>(b))> >print>(c,>'type is'>,>type>(c))> # The optional parameters will not decide> # the type of parameter passed.> # also the order is maintained> print>(>'first call'>)> func(>2>,>'z'>,>2.0>)> # below call uses the default> # mentioned value of c> print>(>'second call'>)> func(>2>,>1>)> # The below call (in comments) will give an error> # since other required parameter is not passed.> # func('a')> print>(>'third call'>)> func(c>=>2>, b>=>3>, a>=>'geeks'>)> |
>
>
Izhod:
first call 2 type is z type is 2.0 type is second call 2 type is 1 type is geeks type is third call geeks type is 3 type is 2 type is>
Torej v bistvu Python funkcionalne klice preverja samo, če je zahtevano število funkcionalnih parametrov posredovano ali ne.
Spodaj je prikazan primer, ko uporabnik poskuša posredovati argumente na oba zgoraj obravnavana načina, skupaj z navedenim previdnostnim ukrepom:
Python3
def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('drugi parameter je manjši') if(a == b): print('oba sta enake vrednosti.') print('prvi klic') comp(1) print( 'drugi klic') comp(2, 1) print('tretji klic') comp(b=1, a=-1) print('četrti klic') comp(-1, b=0 )> |
>
>
Izhod:
first call first parameter is smaller second call second parameter is smaller third call first parameter is smaller fourth call first parameter is smaller>
Zapomniti si moramo torej eno stvar, da je treba argument ključne besede uporabiti po posredovanju vseh pozicijskih argumentov. Zato je to pomembna stvar, ki jo moramo upoštevati pri posredovanju parametrov na oba načina v isto funkcijo.