Argomenti della funzione Python (predefinito, parola chiave e arbitrario)

In Python, puoi definire una funzione che accetta un numero variabile di argomenti. In questo articolo imparerai a definire tali funzioni usando valori predefiniti, parole chiave e argomenti arbitrari.

Video: argomenti della funzione Python: posizione, parole chiave e impostazione predefinita

argomenti

Nell'argomento della funzione definita dall'utente, abbiamo imparato a definire una funzione e chiamarla. In caso contrario, la chiamata alla funzione genererà un errore. Ecco un esempio.

 def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")

Produzione

 Ciao Monica, buongiorno!

Qui, la funzione greet()ha due parametri.

Poiché abbiamo chiamato questa funzione con due argomenti, funziona senza problemi e non otteniamo alcun errore.

Se lo chiamiamo con un numero diverso di argomenti, l'interprete mostrerà un messaggio di errore. Di seguito è una chiamata a questa funzione con uno e nessun argomento insieme ai rispettivi messaggi di errore.

 >>> salutare ("Monica") # solo un argomento TypeError: salutare () mancante 1 argomento posizionale richiesto: 'msg'
 >>> greet () # nessun argomento TypeError: salutare () mancano 2 argomenti posizionali obbligatori: 'nome' e 'msg'

Argomenti di funzione variabile

Fino ad ora, le funzioni avevano un numero fisso di argomenti. In Python, ci sono altri modi per definire una funzione che può accettare un numero variabile di argomenti.

Di seguito vengono descritte tre diverse forme di questo tipo.

Argomenti predefiniti di Python

Gli argomenti delle funzioni possono avere valori predefiniti in Python.

È possibile fornire un valore predefinito a un argomento utilizzando l'operatore di assegnazione (=). Ecco un esempio.

 def greet(name, msg="Good morning!"): """ This function greets to the person with the provided message. If the message is not provided, it defaults to "Good morning!" """ print("Hello", name + ', ' + msg) greet("Kate") greet("Bruce", "How do you do?")

Produzione

Ciao Kate, buongiorno! Ciao Bruce, come stai?

In questa funzione, il parametro namenon ha un valore predefinito ed è obbligatorio (obbligatorio) durante una chiamata.

D'altra parte, il parametro msgha un valore predefinito di "Good morning!". Quindi, è opzionale durante una chiamata. Se viene fornito un valore, sovrascriverà il valore predefinito.

Qualsiasi numero di argomenti in una funzione può avere un valore predefinito. Ma una volta che abbiamo un argomento predefinito, anche tutti gli argomenti alla sua destra devono avere valori predefiniti.

Ciò significa che gli argomenti non predefiniti non possono seguire gli argomenti predefiniti. Ad esempio, se avessimo definito l'intestazione della funzione sopra come:

 def saluto (msg = "Buongiorno!", nome):

Otterremmo un errore come:

 SyntaxError: l'argomento non predefinito segue l'argomento predefinito

Argomenti delle parole chiave Python

Quando chiamiamo una funzione con alcuni valori, questi valori vengono assegnati agli argomenti in base alla loro posizione.

Ad esempio, nella funzione precedente greet(), quando l'abbiamo chiamata as greet("Bruce", "How do you do?"), il valore "Bruce"viene assegnato al nome dell'argomento e in modo simile "How do you do?"a msg.

Python consente di chiamare le funzioni utilizzando argomenti di parole chiave. Quando chiamiamo funzioni in questo modo, l'ordine (posizione) degli argomenti può essere modificato. Le chiamate successive alla funzione precedente sono tutte valide e producono lo stesso risultato.

 # 2 keyword arguments greet(name = "Bruce",msg = "How do you do?") # 2 keyword arguments (out of order) greet(msg = "How do you do?",name = "Bruce") 1 positional, 1 keyword argument greet("Bruce", msg = "How do you do?") 

Come possiamo vedere, possiamo mescolare argomenti posizionali con argomenti di parole chiave durante una chiamata di funzione. Ma dobbiamo tenere presente che gli argomenti delle parole chiave devono seguire gli argomenti posizionali.

Avere un argomento posizionale dopo gli argomenti delle parole chiave provocherà errori. Ad esempio, la funzione chiama come segue:

 greet(name="Bruce","How do you do?")

Risulterà in un errore:

 SyntaxError: argomento non parola chiave dopo argomento parola chiave

Argomenti arbitrari di Python

A volte, non sappiamo in anticipo il numero di argomenti che verranno passati in una funzione. Python ci permette di gestire questo tipo di situazione tramite chiamate di funzione con un numero arbitrario di argomenti.

Nella definizione della funzione, usiamo un asterisco (*) prima del nome del parametro per denotare questo tipo di argomento. Ecco un esempio.

 def greet(*names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print("Hello", name) greet("Monica", "Luke", "Steve", "John")

Produzione

 Ciao Monica Ciao Luca Ciao Steve Ciao Giovanni

Qui abbiamo chiamato la funzione con più argomenti. Questi argomenti vengono racchiusi in una tupla prima di essere passati alla funzione. All'interno della funzione, utilizziamo un forciclo per recuperare tutti gli argomenti.

Articoli interessanti...