Come passare parametri opzionali a una funzione in Python?

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.