Python - Argomenti Predefiniti

Ciao a tutti, aspiranti programmatori Python! Oggi entreremo nel meraviglioso mondo degli argomenti predefiniti in Python. Come vostra insegnante di informatica amichevole, sono entusiasta di guidarvi in questo viaggio. Allora, afferrate la vostra bevanda preferita, mettetevi comodi e iniziamo questa avventura Python insieme!

Python - Default Arguments

Cos'sono gli Argomenti Predefiniti?

Prima di entrare nei dettagli, iniziamo dagli elementari. Gli argomenti predefiniti sono una funzionalità utile in Python che consente di definire parametri di funzione con valori preimpostati. Questi valori saranno utilizzati se non fornite un valore specifico quando chiamate la funzione.

Pensate agli argomenti predefiniti come una rete di sicurezza. Sono lì per catturarvi se dimenticate di specificare un valore, assicurando che la vostra funzione possa ancora funzionare senza problemi. È come avere un amico che porta sempre snack extra a una picnic - potreste non averne sempre bisogno, ma è grandioso averli solo per caso!

Perché Utilizzare Argomenti Predefiniti?

  1. rendono il vostro codice più flessibile.
  2. riducono il numero di argomenti che è necessario fornire.
  3. aiutano a mantenere la compatibilità con le versioni precedenti quando si aggiungono nuovi parametri alle funzioni.

Ora, vediamo come funziona tutto questo nella pratica!

Esempio di Argomenti Predefiniti

Iniziamo con un esempio semplice. Immaginate di creare una funzione per salutare le persone:

def greet(name, greeting="Ciao"):
return f"{greeting}, {name}!"

# Utilizzo della funzione
print(greet("Alice"))
print(greet("Bob", "Ciao"))

Output:

Ciao, Alice!
Ciao, Bob!

In questo esempio, greeting è il nostro argomento predefinito. Se non specificiamo un saluto, la funzione utilizzerà "Ciao" per impostazione predefinita. Diamo un'occhiata più da vicino:

  1. Abbiamo definito la funzione greet con due parametri: name e greeting.
  2. greeting ha un valore predefinito di "Ciao".
  3. Quando chiamiamo greet("Alice"), forniamo solo name. La funzione utilizza il valore predefinito "Ciao" per il saluto.
  4. Quando chiamiamo greet("Bob", "Ciao"), forniamo sia name che greeting, quindi la funzione utilizza "Ciao" invece del valore predefinito.

Esempio: Chiamata della Funzione Senza Argomenti a Chiave

Ora, diamo un'occhiata a un esempio leggermente più complesso. Creeremo una funzione per calcolare il costo totale degli articoli nel carrello della spesa:

def calculate_total(items, tax_rate=0.08, discount=0):
subtotal = sum(items)
total = subtotal * (1 + tax_rate) - discount
return round(total, 2)

# Utilizzo della funzione
cart1 = [10, 20, 30]
print(calculate_total(cart1))
print(calculate_total(cart1, 0.10))
print(calculate_total(cart1, 0.10, 5))

Output:

64.80
66.00
61.00

Spiegazione:

  1. La nostra funzione calculate_total ha tre parametri: items (obbligatorio), tax_rate (predefinito 0.08) e discount (predefinito 0).
  2. Nella prima chiamata, forniamo solo items. La funzione utilizza l'aliquota di tassa predefinita e nessuno sconto.
  3. Nella seconda chiamata, forniamo items e un aliquota di tassa personalizzata di 0.10. Lo sconto rimane 0.
  4. Nella terza chiamata, forniamo tutti e tre gli argomenti: items, aliquota di tassa e sconto di 5.

Ricorda, quando si chiama una funzione senza argomenti a chiave, l'ordine è importante! Python assegna valori ai parametri nell'ordine in cui sono forniti.

Ogetti Mutabili come Argomenti Predefiniti

Ora, ecco dove le cose diventano un po' tristi. L'uso di oggetti mutabili (come liste o dizionari) come argomenti predefiniti può portare a comportamenti inaspettati. Vediamo cosa intendo:

def add_item(item, shopping_list=[]):
shopping_list.append(item)
return shopping_list

print(add_item("mela"))
print(add_item("banana"))
print(add_item("ciliegia"))

Output:

['mela']
['mela', 'banana']
['mela', 'banana', 'ciliegia']

Sorpresa! La lista continua a crescere con ogni chiamata. Questo succede perché la lista predefinita viene creata solo una volta quando la funzione viene definita, non ogni volta che la funzione viene chiamata.

Per evitare questo, possiamo usare None come valore predefinito e creare una nuova lista all'interno della funzione:

def add_item(item, shopping_list=None):
if shopping_list is None:
shopping_list = []
shopping_list.append(item)
return shopping_list

print(add_item("mela"))
print(add_item("banana"))
print(add_item("ciliegia"))

Output:

['mela']
['banana']
['ciliegia']

Molto meglio! Ora ogni chiamata crea una nuova lista come previsto.

Riepilogo degli Argomenti Predefiniti di Python

Riassumiamo ciò che abbiamo imparato in una tabella comoda:

Concetto Descrizione Esempio
Argomento Predefinito di Base Fornisce un valore predefinito per un parametro def greet(name, greeting="Ciao"):
Argomenti Predefiniti Multipli Una funzione può avere più argomenti predefiniti def calculate_total(items, tax_rate=0.08, discount=0):
Ordine degli Argomenti Gli argomenti non predefiniti devono venire prima degli argomenti predefiniti nella definizione della funzione def func(obbligatorio, opzionale=default):
Argomenti Predefiniti Mutabili Evitare l'uso di oggetti mutabili come argomenti predefiniti Usa None come predefinito e crea l'oggetto all'interno della funzione
Argomenti a Chiave Consentono di chiamare funzioni con argomenti nominati in qualsiasi ordine calculate_total(items=[10, 20], discount=5)

E qui avete fatto, ragazzi! Avete appena aumentato i vostri skills Python con gli argomenti predefiniti. Ricorda, come ogni strumento potente, usateli con saggezza. Possono rendere il vostro codice più flessibile e più facile da usare, ma attenzione con quegli oggetti mutabili predefiniti!

Continuate a praticare, rimanete curiosi e buon coding! Prima che vi rendiate conto, scriverete Python come dei professionisti. Fino alla prossima volta, questo è il vostro insegnante di informatica amichevole, che firma off!

Credits: Image by storyset