In Python, quando definiamo funzioni con valori predefiniti per determinati parametri, si dice che i suoi argomenti siano impostati come opzione per l'utente. Gli utenti possono passare i propri valori o fingere che la funzione utilizzi i valori predefiniti specificati.
In questo modo, l'utente può chiamare la funzione passando i parametri facoltativi o semplicemente passando i parametri richiesti.
Esistono due modi principali per passare parametri opzionali in Python
rimozione da arraylist
- Senza utilizzare argomenti di parole chiave.
- Utilizzando argomenti di parole chiave.
Passaggio senza utilizzare argomenti di parole chiave
Alcuni punti principali a cui prestare attenzione durante il passaggio senza utilizzare argomenti con parole chiave sono:
- L'ordine dei parametri deve essere mantenuto, ovvero l'ordine in cui i parametri sono definiti nella funzione deve essere mantenuto durante la chiamata della funzione.
- I valori per i parametri non facoltativi devono essere passati altrimenti verrà generato un errore.
- Il valore degli argomenti predefiniti può essere passato o ignorato.
Di seguito sono riportati alcuni codici che spiegano questo concetto.
Esempio 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>))> |
>
>
Produzione:
4 1099>
Esempio 2: possiamo anche passare stringhe.
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'>)> |
>
>
Produzione:
GeeksForGeeks GeeksForGeeks>
Passaggio con argomenti di parole chiave
Quando le funzioni vengono definite, i parametri vengono scritti nel formato tipo dati nome-parola chiave. Quindi Python fornisce un meccanismo per chiamare la funzione usando il nome della parola chiave per passare i valori. Questo aiuta il programmatore sollevandolo dal dover imparare la sequenza o l'ordine in cui i parametri devono essere passati.
Alcuni punti importanti che dobbiamo ricordare sono i seguenti:
- In questo caso, non siamo tenuti a mantenere l'ordine di passaggio dei valori.
- Non dovrebbe esserci alcuna differenza tra i nomi delle parole chiave passate e dichiarate.
Di seguito è riportato il codice per la sua implementazione.
Python3
long per int java
# 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'>)> |
>
>
Produzione:

Come possiamo vedere, non è necessario mantenere alcun ordine nell’esempio precedente. Inoltre, possiamo vedere che quando proviamo a passare solo i parametri opzionali viene generato un errore. Ciò accade poiché i parametri opzionali possono essere omessi poiché hanno un valore predefinito con essi, ma non possiamo omettere i parametri richiesti (stringa1 nel caso precedente). Quindi, mostra un errore con il flag: mancante 1 argomento richiesto.
Questo esempio darà un'idea più approfondita dell'argomento precedente:
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'>)> |
>
>
Produzione:
valore della stringa java
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>
Quindi fondamentalmente le chiamate funzionali Python controllano solo se il numero richiesto di parametri funzionali viene passato o meno.
Di seguito viene mostrato il caso in cui un utente tenta di passare argomenti in entrambi i modi discussi sopra insieme alle precauzioni fornite:
Python3
def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('il secondo parametro è più piccolo') if(a == b): print('entrambi hanno lo stesso valore.') print('prima chiamata') comp(1) print( 'seconda chiamata') comp(2, 1) print('terza chiamata') comp(b=1, a=-1) print('quarta chiamata') comp(-1, b=0 )> |
>
>
Produzione:
first call first parameter is smaller second call second parameter is smaller third call first parameter is smaller fourth call first parameter is smaller>
Quindi una cosa che dovremmo ricordare è che l'argomento parola chiave dovrebbe essere utilizzato dopo che sono stati passati tutti gli argomenti posizionali. Quindi questa è una cosa importante che dobbiamo tenere a mente mentre passiamo i parametri in entrambi i modi alla stessa funzione.