Esistono tre tipi di argomenti che una funzione Python può accettare: standard, variabile (*args) e parola chiave (**kwargs). Gli argomenti standard sono i più semplici ma hanno funzionalità limitate. D'altra parte, *args e **kwargs ti consentono di rendere le tue funzioni più flessibili, accettando un numero variabile di input.

Il tipo di passaggio di argomenti che scegli dipende dalla natura della tua funzione e dal tuo stile di programmazione preferito.

Funzioni di base in Python

Per capire come funzionano i due argomenti delle variabili nelle funzioni Python, è essenziale capire in primo luogo perché esistono. Una semplice funzione dichiara un numero fisso di argomenti anonimi in questo modo:

defadd(a, b, c):
Restituzione a+b+c

Questa funzione funziona bene, ma c'è spazio per miglioramenti. Il problema più grande è che gestisce solo due argomenti, quindi può sommare solo due numeri. E se volessi aggiungere due o quattro numeri? Questa funzione non ti consentirà di farlo. Il passaggio di più o meno argomenti di quelli accettati dalla funzione porterà a un TypeError.

instagram viewer

Naturalmente, potresti creare più funzioni per accettare un numero diverso di argomenti. Ma questo è scomodo e non si adatterà affatto bene. Dovrai anche creare una nuova funzione ogni volta che vuoi gestire un nuovo numero di input.

È qui che entrano in gioco gli argomenti variabili e gli argomenti delle parole chiave. Usando *args e **kwargs, puoi definire funzioni flessibili che possono richiedere un numero variabile di input.

Che cos'è *args in Python?

L'idea principale alla base di *args in Python è di permetterti di passare un numero variabile di input alla tua funzione. Questo è utile in varie applicazioni. Ad esempio, pensa a un programma di calcolatrice in cui vuoi dare all'utente la possibilità di aggiungere due o più numeri e restituire la somma.

Nota che args è solo un nome di variabile; è il * che è importante. Puoi utilizzare qualsiasi nome valido per l'argomento della tua variabile, purché includi il *.

Come usare *args

È possibile modificare la funzione addnum per accettare un numero variabile di input come segue:

defadd(*args):
totale = 0

per num in argomenti:
totale = totale + num

Restituzione totale

Il frammento di codice sopra usa un ciclo for per scorrere gli input forniti.

Puoi quindi chiamare la funzione addnum con argomenti variabili e funzionerà senza generare un errore:

Stampa(aggiungere(10, 1, 12, 12, 4, 54, 5)) ## restituisce 98
Stampa(aggiungere(14, 54, 5)) # restituisce 73
Stampa(aggiungere(10, 5)) # restituisce 15

Cos'è **kwargs in Python?

Mentre sia *args che **kwargs ci consentono di passare un numero variabile di input alle funzioni, quest'ultimo è specifico per gli argomenti delle parole chiave. Nel caso non lo sapessi, gli argomenti delle parole chiave sono solo nomi fantasiosi per argomenti con un nome.

Un'altra cosa unica di **kwargs è che Python rappresenta il valore come dizionario.

Come usare **kwargs

Come *args, il doppio asterisco è il bit importante; puoi usare qualsiasi parola come nome di parametro. Ecco un esempio di come usare **kwargs in Python:

deffrequenza_settimanale(**giorni della settimana):
partecipanti_totale = 0

perpartecipantiingiorni della settimana.i valori():
total_partecipanti = total_partecipanti + partecipanti

Restituzione totale_partecipanti

Stampa(presenza_settimanale (lunedì = 265, martedì = 698, mercoledì = 365, giovedì = 463, venerdì = 234)) # restituisce 2025
Stampa(presenza_settimanale (lunedì = 265, venerdì = 234)) # restituisce 499
Stampa(presenza_settimanale (mercoledì = 365, giovedì = 463, venerdì = 234)) # restituisce 1062

Anche lo snippet di codice sopra usa un ciclo for, ma questa volta con il metodo values() integrato di Python. Quel metodo restituisce un oggetto di visualizzazione di tutti i valori nel dizionario. Il metodo values() ti consente di farlo scorrere un dizionario Python senza problemi.

Usa argomenti variabili per rendere flessibili le tue funzioni Python

Gli argomenti delle funzioni sono utili, ma alcune funzioni possono trarre vantaggio dall'accettazione di un numero variabile di argomenti. Gli argomenti delle parole chiave con nome possono rendere il codice più leggibile e più facile da usare. Dovresti abbracciare gli argomenti *args e **kwargs di Python. Sono piuttosto semplici da usare e con essi puoi rendere le tue funzioni e i tuoi programmi più flessibili.

Seguendo i passaggi e gli snippet di codice sopra, ci auguriamo che ora sia possibile utilizzare parole chiave variabili e argomenti non parole chiave per le tue funzioni.