Modifica delle Funzioni
Nella programmazione, le funzioni sono strumenti dinamici che possono adattarsi a diverse situazioni ed esigenze. Non sono solo blocchi di codice fissi. È possibile potenziare le funzioni per renderle più versatili e intuitive in vari contesti.
In questo capitolo, esamineremo alcune tecniche importanti per modificare le funzioni, come l'utilizzo di argomenti predefiniti e argomenti per parola chiave.
Iniziamo con un esempio semplice di modifica delle funzioni per migliorarne l'utilità nel nostro sistema di gestione di un negozio di alimentari:
Argomenti Predefiniti
Gli argomenti predefiniti sono una funzionalità utile in Python che consente di specificare valori predefiniti per i parametri di una funzione.
Nella funzione apply_discount()
, il parametro discount
è impostato di default a 0.10
. Questo significa che la funzione applicherà automaticamente uno sconto del 10% a meno che non venga specificato diversamente. Come si vede nella variabile default_discount_price
, è possibile chiamare la funzione passando solo il parametro price
.
Tuttavia, se necessario, è possibile sovrascrivere il valore predefinito passando sia il price
che un discount
personalizzato (ad esempio, 0.20
per il 20%) come mostrato con la variabile custom_discount_price
.
# Define a function with a default `discount` argument def apply_discount(price, discount=0.10): discounted_price = price * (1 - discount) return discounted_price # Call the function without providing a `discount`, using the default value default_discount_price = apply_discount(100) print(f"Price after applying the default discount: ${default_discount_price}") # Call the function with a custom `discount` value custom_discount_price = apply_discount(100, 0.20) print(f"Price after applying a custom discount: ${custom_discount_price}")
Argomenti per Parola Chiave
Gli argomenti per parola chiave in Python consentono di passare gli argomenti nominando esplicitamente ciascun parametro, rendendo le chiamate alle funzioni più leggibili e flessibili. Questo è particolarmente utile quando una funzione ha più parametri o quando l'ordine degli argomenti potrebbe creare confusione.
Nel seguente esempio, sia price
che discount
sono specificati, mentre il parametro tax
mantiene il suo valore predefinito, offrendo flessibilità senza compromettere la chiarezza.
# Function where `tax` has a default value def calculate_total(price, discount, tax=0.05): total = price * (1 + tax) * (1 - discount) return total # Calling the function using keyword arguments total_cost = calculate_total(price=100, discount=0.15) print(f"Total cost after applying discount: ${total_cost}")
Nota
L'ordine dei parametri non è importante quando vengono passati utilizzando argomenti per parola chiave.
Swipe to start coding
Crea funzioni per calcolare il costo totale di un prodotto applicando uno sconto e una tassa, utilizzando argomenti per parola chiave e valori predefiniti per una maggiore flessibilità.
- Definire
apply_discount(price, discount=0.05)
→ Restituisce il prezzo dopo aver applicato lo sconto. - Definire
apply_tax(price, tax=0.07)
→ Restituisce il prezzo dopo aver aggiunto la tassa. - Definire
calculate_total(price, discount=0.05, tax=0.07)
→ Utilizzaapply_discount()
eapply_tax()
per restituire il prezzo totale con entrambi sconto e tassa applicati. - Chiamare
calculate_total(120)
utilizzando lo sconto e la tassa predefiniti. - Chiamare
calculate_total(100, discount=0.10, tax=0.08)
utilizzando valori personalizzati tramite argomenti per parola chiave.
Requisiti di Output
- Stampare il risultato con i valori predefiniti:
Costo totale con sconto e tassa predefiniti: $<total_price_default>
- Stampare il risultato con valori personalizzati:
Costo totale con sconto e tassa personalizzati: $<total_price_custom>
Nota
Quando si definiscono le funzioni, posizionare prima i parametri obbligatori, seguiti dai parametri con valori predefiniti.
Quando si chiamano funzioni con argomenti per parola chiave, gli argomenti posizionali devono precedere quelli per parola chiave.
Soluzione
Grazie per i tuoi commenti!