📘 Modifica delle Funzioni

Le funzioni in Python non sono statiche: possono essere potenziate con argomenti di default e argomenti per parola chiave per renderle più versatili e leggibili, adattandosi a diverse esigenze di programmazione.


🔹 Argomenti di Default

Gli argomenti di default consentono di specificare un valore predefinito per un parametro della funzione.

# Funzione con argomento di default `discount`
def apply_discount(price, discount=0.10):
    discounted_price = price * (1 - discount)
    return discounted_price

# Usando il valore di default
default_discount_price = apply_discount(100)
print(f"Price after applying the default discount: ${default_discount_price}")

# Sovrascrivendo il valore di default
custom_discount_price = apply_discount(100, 0.20)
print(f"Price after applying a custom discount: ${custom_discount_price}")
  • Se non si specifica discount, la funzione applica 10% di default.
  • È possibile sovrascrivere il valore predefinito fornendo un argomento esplicito.

🔹 Argomenti per Parola Chiave

Gli argomenti per parola chiave permettono di specificare i valori tramite il nome del parametro, migliorando leggibilità e flessibilità.

# Funzione con parametro `tax` con valore di default
def calculate_total(price, discount, tax=0.05):
    total = price * (1 + tax) * (1 - discount)
    return total

# Chiamata con argomenti per parola chiave
total_cost = calculate_total(price=100, discount=0.15)
print(f"Total cost after applying discount: ${total_cost}")
  • Quando si usano keyword arguments, l’ordine dei parametri non è rilevante.
  • Permette di combinare parametri obbligatori e predefiniti in modo chiaro.

💡 Compito

Creare funzioni per calcolare il costo totale di un prodotto con sconto e tassa, usando argomenti di default e keyword arguments.

Istruzioni:

  1. Definire apply_discount(price, discount=0.05) → Restituisce il prezzo scontato.

  2. Definire apply_tax(price, tax=0.07) → Restituisce il prezzo dopo l’aggiunta della tassa.

  3. Definire calculate_total(price, discount=0.05, tax=0.07) → Combina apply_discount() e apply_tax() per restituire il prezzo totale.

Esempi di chiamata:

# Valori predefiniti
total_price_default = calculate_total(120)
print(f"Total cost with default discount and tax: ${total_price_default}")

# Valori personalizzati
total_price_custom = calculate_total(100, discount=0.10, tax=0.08)
print(f"Total cost with custom discount and tax: ${total_price_custom}")

🔹 Nota

  • Parametri obbligatori prima di quelli con valori di default.
  • Negli argomenti per parola chiave, gli argomenti posizionali devono precedere quelli specificati per parola chiave.

soluzione completa

# Funzione per applicare uno sconto
def apply_discount(price, discount=0.05):
    return price * (1 - discount)

# Funzione per applicare la tassa
def apply_tax(price, tax=0.07):
    return price * (1 + tax)

# Funzione per calcolare il totale combinando sconto e tassa
def calculate_total(price, discount=0.05, tax=0.07):
    discounted_price = apply_discount(price, discount)
    total_price = apply_tax(discounted_price, tax)
    return total_price

# Calcolo con valori predefiniti
total_price_default = calculate_total(120)
print(f"Total cost with default discount and tax: ${total_price_default}")

# Calcolo con valori personalizzati
total_price_custom = calculate_total(100, discount=0.10, tax=0.08)
print(f"Total cost with custom discount and tax: ${total_price_custom}")

Output atteso:

Total cost with default discount and tax: $119.34
Total cost with custom discount and tax: $97.2

Questa soluzione mostra chiaramente:

  • Uso di argomenti di default (discount=0.05, tax=0.07)
  • Uso di funzioni separate per modularità (apply_discount e apply_tax)
  • Uso di keyword arguments per personalizzare sconto e tassa senza cambiare l’ordine dei parametri.