CodeGym /Corsi /Python SELF IT /Parametri della funzione

Parametri della funzione

Python SELF IT
Livello 6 , Lezione 3
Disponibile

9.1 Parametri vs argomenti

I principianti spesso si confondono tra i termini "parametri" e "argomenti", ma la loro distinzione è importante per capire la programmazione funzionale.

I parametri sono le variabili che sono elencate nella definizione della funzione. Rappresentano i nomi che la funzione usa per riferirsi ai valori che le vengono passati. I parametri della funzione fungono da "segnaposto" per i valori che verranno utilizzati nel corpo della funzione. Quando definisci una funzione, ne descrivi i parametri.


def print_info(name, age):  # name e age sono parametri
    print(f"Name: {name}, Age: {age}")        

Gli argomenti sono valori o dati specifici che vengono passati alla funzione al momento della sua chiamata. Gli argomenti si sostituiscono ai parametri quando la funzione viene eseguita. Gli argomenti possono essere costanti, variabili, espressioni o anche risultati di altre funzioni.


print_info("Alice", 30)  # "Alice" e 30 sono argomenti

Tipi di argomenti

  1. Argomenti posizionali: i valori sono passati nell'ordine in cui i parametri sono definiti.
  2. Argomenti chiave: argomenti passati alla funzione utilizzando il nome del parametro, il che consente di elencarli in qualsiasi ordine dopo gli argomenti posizionali.
  3. Argomenti di default: quando si definisce una funzione è possibile assegnare valori di default ai parametri.

Gli argomenti posizionali li usi già, mentre gli argomenti chiave e quelli di default li vedremo nelle prossime lezioni.

La distinzione tra parametri e argomenti in Python aiuta a capire come le funzioni ricevono e processano i dati. Questa distinzione è importante per creare funzioni flessibili che possono essere facilmente adattate a diverse situazioni di chiamata, rendendo il tuo codice più modulare e riutilizzabile.

9.2 Valori di default

Gli argomenti di default in Python sono un meccanismo che consente alle funzioni di specificare preventivamente dei valori predefiniti per uno o più parametri. Questa funzionalità rende la chiamata alla funzione più comoda e flessibile, poiché non richiede di specificare esplicitamente tutti gli argomenti ogni volta che si chiama la funzione.

Definizione degli argomenti di default

Gli argomenti di default sono specificati nella definizione della funzione, dove si assegna al parametro un valore che verrà utilizzato, se l'argomento non viene passato nella chiamata della funzione:


def print_info(name, company='Unknown'):
    print(f"Name: {name}, Company: {company}")

In questo esempio, company ha un valore di default 'Unknown'.

  • Semplificazione della chiamata alle funzioni: Funzioni con molti parametri possono essere chiamate specificando solo gli argomenti più importanti.
  • Flessibilità: Le funzioni possono essere adattate a diversi scenari d'uso senza modificare il loro codice.
  • Leggibilità del codice: L'indicazione esplicita dei valori di default rende il codice autoesplicativo.

Importanti dettagli

Immutabilità: I valori di default per gli argomenti devono essere tipi di dati immutabili, come numeri, stringhe o tuple. L'uso di tipi mutabili (come liste o dizionari) può portare a effetti collaterali indesiderati poiché le modifiche a questi oggetti persistono tra le chiamate della funzione.

Ordine degli argomenti: I parametri con argomenti di default devono seguire dopo i parametri senza argomenti di default nella definizione della funzione.

Un altro esempio:


def create_user(username, is_admin=False):
    if is_admin:
        print(f"User {username} is an admin.")
    else:
        print(f"User {username} is a regular user.")
        
create_user("Alice")  # is_admin == False
create_user("Bob", is_admin=True)  # is_admin == True
create_user("Karl", True)  # is_admin == True

Sopra ci sono 3 modi per chiamare una funzione con un argomento di default: ognuno di essi è valido.

9.3 Passaggio dei parametri per nome

Passare i parametri a una funzione per nome consente di specificare in modo più chiaro quali valori si passano a quali argomenti, migliorando la leggibilità del codice e riducendo la possibilità di errori, legati al disordine degli argomenti.

Per passare un valore a un parametro per nome, è necessario assegnare il valore al parametro designato nella chiamata della funzione:


funzione(parametro1 = valore, parametro2 = valore)

Questo metodo è particolarmente utile quando si lavora con funzioni che hanno molti parametri o parametri con valori di default.

Vantaggi del passaggio dei parametri per nome

  • Chiarezza e leggibilità: L'indicazione del nome del parametro nella chiamata rende il codice più facilmente comprensibile per altri sviluppatori o nel ritorno al proprio vecchio codice.
  • Flessibilità: I parametri possono essere passati in qualsiasi ordine, il che è utile quando una funzione ha molti parametri.
  • Evitare errori: Non è necessario ricordare l'ordine dei parametri della funzione, riducendo quindi la possibilità di errori dovuti al passaggio errato dei valori.

Esempi di utilizzo


def create_profile(name, age, job):
    print(f"Name: {name}")
    print(f"Age: {age}")
    print(f"Job: {job}")
        
create_profile(name = "John", age = 28, job = "Developer")

In questo esempio, i parametri non sono passati in ordine, ma a ciascuno di essi viene esplicitamente assegnato un valore, rendendo la chiamata alla funzione più flessibile e comprensibile.

Esempio 2:

A proposito, ti sei già imbattuto nel passaggio dei parametri per nome. Nella funzione print(), ricordi?

Caratteristiche e limitazioni

I parametri passati per nome devono seguire dopo i parametri senza nome, se presenti nella definizione della funzione.

Non è possibile utilizzare lo stesso nome di parametro più di una volta nella chiamata di una funzione.

Il passaggio dei parametri per nome è una potente funzionalità di Python, che rende il codice più sicuro e comprensibile, soprattutto quando si utilizzano funzioni con molti argomenti o valori opzionali.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION