Pythonissa, kun määritämme funktioita oletusarvoilla tietyille parametreille, sanotaan, että sen argumentit on asetettu vaihtoehdoksi käyttäjälle. Käyttäjät voivat joko välittää arvonsa tai teeskennellä funktion käyttävän heidän määritettyjä oletusarvojaan.
Tällä tavalla käyttäjä voi kutsua funktiota joko välittämällä valinnaiset parametrit tai välittämällä vain vaaditut parametrit.
Pythonissa on kaksi päätapaa valinnaisten parametrien välittämiseen
scan.nextstring java
- Ilman avainsanaargumentteja.
- Käyttämällä avainsanaargumentteja.
Hyväksyminen ilman avainsanaargumentteja
Jotkut tärkeimmät seikat, jotka on otettava huomioon ohittaessaan ilman avainsanaargumentteja, ovat:
- Parametrien järjestys tulee säilyttää, eli järjestys, jossa parametrit määritellään funktiossa, tulee säilyttää funktiota kutsuttaessa.
- Ei-valinnaisten parametrien arvot tulee välittää, muuten se antaa virheilmoituksen.
- Oletusargumenttien arvo voidaan joko välittää tai jättää huomiotta.
Alla on joitain koodeja, jotka selittävät tämän käsitteen.
Esimerkki 1:
Python 3
# 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>))> |
>
>
Lähtö:
4 1099>
Esimerkki 2: voimme myös välittää merkkijonoja.
Python 3
# 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'>)> |
java pitkä int
>
>
Lähtö:
GeeksForGeeks GeeksForGeeks>
Hyväksyminen avainsanaargumenteilla
Kun funktiot määritellään, parametrit kirjoitetaan muotoon tietotyyppi avainsana-nimi. Python tarjoaa siis mekanismin kutsua funktio käyttämällä avainsananimeä arvojen välittämiseen. Tämä auttaa ohjelmoijaa antamalla heille mahdollisuuden olla oppimatta parametrien kulkua tai järjestystä.
Joitakin tärkeitä kohtia, jotka meidän on muistettava, ovat seuraavat:
- Tässä tapauksessa meidän ei tarvitse ylläpitää arvojen välitysjärjestystä.
- Välitettyjen ja ilmoitettujen avainsanojen nimien välillä ei pitäisi olla eroa.
Alla on koodi sen toteuttamiseksi.
Python 3
# 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'>)> |
>
>
Lähtö:

Kuten näemme, emme edellytä järjestyksen ylläpitämistä yllä olevassa esimerkissä. Voimme myös nähdä, että kun yritämme välittää vain valinnaisia parametreja, se aiheuttaa virheen. Tämä tapahtuu, koska valinnaiset parametrit voidaan jättää pois, koska niillä on oletusarvo, mutta emme voi jättää pois pakollisia parametreja (merkkijono1 yllä olevassa tapauksessa.) Tästä syystä se näyttää virheen lipun kanssa: puuttuu 1 vaadittu argumentti.
Tämä esimerkki antaa paremman käsityksen yllä olevasta aiheesta:
Python 3
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'>)> |
>
>
Lähtö:
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>
Joten periaatteessa python-toiminnalliset kutsut tarkistavat vain, onko vaadittu määrä toiminnallisia parametreja läpäissyt vai ei.
Alla on esimerkki tapauksesta, jossa käyttäjä yrittää välittää argumentteja molemmilla yllä mainituilla tavoilla ja annettujen varotoimien lisäksi:
Python 3
def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('toinen parametri on pienempi') if(a == b): print('molemmat ovat samanarvoisia.') print('ensimmäinen kutsu') comp(1) print( 'toinen kutsu') comp(2, 1) print('third call') comp(b=1, a=-1) print('neljäs kutsu') comp(-1, b=0 )> |
>
pitkä nauhalle
>
Lähtö:
first call first parameter is smaller second call second parameter is smaller third call first parameter is smaller fourth call first parameter is smaller>
Joten yksi asia meidän tulisi muistaa, että avainsanaargumenttia tulisi käyttää sen jälkeen, kun kaikki sijaintiargumentit on hyväksytty. Siksi tämä on tärkeä asia, joka meidän on pidettävä mielessä siirtäessämme parametreja molemmilla tavoilla samaan funktioon.