logo

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

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.