Wanneer we in Python functies definiëren met standaardwaarden voor bepaalde parameters, wordt er gezegd dat de argumenten ervan zijn ingesteld als een optie voor de gebruiker. Gebruikers kunnen hun waarden doorgeven of kunnen doen alsof de functie de standaardwaarden gebruikt die zijn opgegeven.
Op deze manier kan de gebruiker de functie aanroepen door deze optionele parameters door te geven of door alleen de vereiste parameters door te geven.
Er zijn twee manieren om optionele parameters in Python door te geven
namen van steden VS
- Zonder trefwoordargumenten te gebruiken.
- Door trefwoordargumenten te gebruiken.
Passeren zonder trefwoordargumenten te gebruiken
Een belangrijk punt waar u op moet letten bij het passeren zonder trefwoordargumenten te gebruiken, is:
- De volgorde van de parameters moet worden gehandhaafd, d.w.z. de volgorde waarin parameters in de functie worden gedefinieerd, moet worden gehandhaafd tijdens het aanroepen van de functie.
- De waarden voor de niet-optionele parameters moeten worden doorgegeven, anders zal er een fout optreden.
- De waarde van de standaardargumenten kan worden doorgegeven of genegeerd.
Hieronder staan enkele codes die dit concept uitleggen.
Voorbeeld 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>))> |
>
>
Uitgang:
4 1099>
Voorbeeld 2: we kunnen ook snaren doorgeven.
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'>)> |
>
voorwaardelijke operator in Java
>
Uitgang:
GeeksForGeeks GeeksForGeeks>
Passeren met trefwoordargumenten
Wanneer functies worden gedefinieerd, worden de parameters geschreven in de vorm datatype trefwoordnaam. Python biedt dus een mechanisme om de functie aan te roepen met behulp van de trefwoordnaam voor het doorgeven van de waarden. Dit helpt de programmeur door hem te ontlasten door de volgorde of volgorde waarin de parameters moeten worden doorgegeven niet te leren.
Enkele belangrijke punten die we moeten onthouden zijn de volgende:
- In dit geval zijn we niet verplicht om de volgorde van het doorgeven van de waarden aan te houden.
- Er mag geen verschil zijn tussen de doorgegeven en gedeclareerde trefwoordnamen.
Hieronder vindt u de code voor de implementatie ervan.
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'>)> |
>
>
Uitgang:

Zoals we kunnen zien, hoeven we in het bovenstaande voorbeeld geen enkele bestelling bij te houden. We kunnen ook zien dat wanneer we alleen de optionele parameters proberen door te geven, er een fout optreedt. Dit gebeurt omdat optionele parameters kunnen worden weggelaten omdat ze een standaardwaarde hebben, maar we kunnen vereiste parameters (string1 in het bovenstaande geval) niet weglaten. Daarom wordt er een fout weergegeven met de vlag: er ontbreekt 1 vereist argument.
Dit voorbeeld geeft een beter inzicht in het bovenstaande onderwerp:
Python3
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'>)> |
>
>
Uitgang:
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>
Functionele oproepen van Python controleren dus in principe alleen of het vereiste aantal functionele parameters is doorgegeven of niet.
Hieronder ziet u het geval waarin een gebruiker argumenten probeert door te geven op beide manieren die hierboven zijn besproken, samen met de gegeven voorzorgsmaatregel:
Python3
def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('tweede parameter is kleiner') if(a == b): print('beide hebben dezelfde waarde.') print('eerste oproep') comp(1) print( 'tweede oproep') comp(2, 1) print('derde oproep') comp(b=1, a=-1) print('vierde oproep') comp(-1, b=0 )> |
>
>
Uitgang:
polymorfisme in Java
first call first parameter is smaller second call second parameter is smaller third call first parameter is smaller fourth call first parameter is smaller>
Eén ding moeten we dus onthouden: het trefwoordargument moet worden gebruikt nadat alle positionele argumenten zijn doorgegeven. Daarom is dit een belangrijk ding dat we in gedachten moeten houden bij het doorgeven van parameters op beide manieren aan dezelfde functie.