argomenti predefiniti di Python

Un argomento può avere un valore predefinito in una funzione Python. Se specifichi argomenti con valori predefiniti, devono venire dopo argomenti senza valori predefiniti. In caso contrario, si verifica un "Errore di sintassi: l’argomento non predefinito segue l’argomento predefinito" error.

In questa guida, parliamo di cosa significa questo errore e perché viene generato. Esaminiamo un esempio di questo errore per aiutarti a capire come risolverlo nel tuo codice.

SyntaxError: l’argomento non predefinito segue l’argomento predefinito

Python assegna argomenti a variabili nell’ordine in cui appaiono in una chiamata di funzione.

Gli argomenti predefiniti devono precedere gli argomenti non predefiniti. Questo perché gli argomenti non predefiniti sono obbligatori.

Mentre i valori predefiniti hanno un valore anche se non ne viene specificato uno, un argomento non predefinito non lo fa. Gli argomenti predefiniti non hanno alcuno scopo se devi indicare un valore per ciascuno di essi.

Considera il seguente codice:

In questo codice, Python lo fa non so se "John" è assegnato a "nome" o "punteggio". Dobbiamo usare esplicitamente i valori che devono essere assegnati ad ogni argomento nella nostra chiamata di funzione:

Questa sintassi è più dettagliata rispetto a quando si inseriscono gli argomenti predefiniti prima di quelli non predefiniti.

L’81% dei partecipanti ha dichiarato di sentirsi più sicuro delle proprie prospettive di lavoro nel settore tecnologico dopo aver partecipato a un bootcamp. Fatti abbinare a un bootcamp oggi.

Il laureato medio di un bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’avvio di un bootcamp alla ricerca del primo lavoro.

In alternativa, possiamo assegnare un valore ad ogni argomento. Ciò vanifica lo scopo di avere argomenti con valori predefiniti.

In una funzione, l’ordine in cui devono apparire gli argomenti è:

Se non aderisci a questo ordine, Python restituisce un messaggio di errore.

Uno scenario di esempio

Scrivi un programma che calcoli la percentuale che uno studente ha guadagnato in un test.

Inizia definendo una funzione che calcola la percentuale che uno studente ha guadagnato in un test:

La nostra funzione accetta due argomenti: il punteggio ottenuto da uno studente e quanti voti erano disponibili. Successivamente, chiedi a un utente di presentare il punteggio del test e il numero di voti disponibili nel test:

Convertiamo entrambi i valori che un utente inserisce in numeri in virgola mobile cosi possiamo eseguire un’operazione matematica con loro. Quindi, chiama la nostra funzione e passa i valori che il nostro utente ha inserito tramite la nostra funzione:

Una volta che il nostro programma calcola la percentuale che uno studente ha guadagnato in un test, stampiamo quel valore sulla console. Arrotondiamo la percentuale a due cifre decimali utilizzando il metodo round(). Esegui il nostro codice e guarda cosa succede:

Il nostro codice restituisce un errore. Risolviamo questo problema.

La soluzione

Abbiamo specificato un argomento predefinito prima di un argomento non predefinito nella nostra funzione calcola_percentuale:

Questo rende inutile lo scopo di avere un argomento predefinito. Come farà Python a sapere quale valore dovrebbe essere impostato per "score" se specifichiamo un solo valore?

Per risolvere questo problema, dobbiamo cambiare l’ordine dei nostri argomenti in modo che i nostri argomenti predefiniti appaiano per ultimi. Cambiamo il nostro codice:

Prova a eseguire il nostro codice:

Il nostro codice calcola con successo la percentuale che uno studente ha guadagnato nel suo test.

Conclusione

L’errore Python "SyntaxError: l’argomento non predefinito segue l’argomento predefinito viene generato quando si specifica un argomento predefinito prima di un argomento non predefinito.

Per risolvere questo errore, assicurati di disporre tutti gli argomenti in una funzione in modo che gli argomenti predefiniti vengano dopo quelli non predefiniti. L’ordine in cui devono apparire gli argomenti è: non predefinito, predefinito, parola chiave, parola chiave variabile.

Ora sei pronto per risolvere questo errore comune di Python come un codificatore esperto!