Come passare parametri opzionali a una funzione in Python?
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
- 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
# 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:
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.