single
Combinatie van Positionele en Sleutelwoord Willekeurige Argumenten
Veeg om het menu te tonen
Beschouw een functie die de totale kosten van meerdere items berekent, waarbij je een willekeurig aantal prijzen en optionele keyword-instellingen zoals kortingen of belastingen kunt doorgeven.
12345678910111213141516171819202122232425def calculate_total_cost(*prices, **settings): subtotal = sum(prices) discount = settings.get('discount', 0) tax = settings.get('tax', 0) discount_amount = subtotal * (discount / 100) taxed_amount = (subtotal - discount_amount) * (1 + tax / 100) print(f'Subtotal: ${subtotal:.2f}') if discount > 0: print(f'Discount: {discount}% (-${discount_amount:.2f})') else: print('No discount applied.') if tax > 0: print(f'Tax: {tax}% (+${taxed_amount - (subtotal - discount_amount):.2f})') print(f'Final total: ${taxed_amount:.2f}') print() # Examples of using the function calculate_total_cost(1000, 250, 50) calculate_total_cost(1200, 800, discount=10) calculate_total_cost(500, 750, 250, discount=5, tax=8)
In de bovenstaande code zie je de regel settings.get('discount', 0).
Omdat settings keyword-argumenten verzamelt in een standaard Python-dictionary, gebruik je de .get()-methode van de dictionary om waarden veilig op te halen.
Normaal gesproken, als je probeert een sleutel op te zoeken die niet bestaat in een dictionary met vierkante haken (zoals settings['discount']), zal Python crashen en een KeyError geven. De .get()-methode voorkomt dit door je toe te staan een standaardwaarde op te geven.
De syntaxis werkt als volgt:
dictionary.get(key, default_value)
key: de naam van de instelling die je zoekt (bijvoorbeeld 'discount' of 'tax').
default_value: de waarde die wordt teruggegeven als die sleutel niet aan de functie is doorgegeven.
Regels voor het combineren van willekeurige argumenten
Positionele willekeurige argumenten (*args)
*args verzamelt alle extra positionele argumenten in een tuple.
In dit voorbeeld kan de functie een willekeurig aantal artikelprijzen accepteren zonder deze expliciet te hoeven definiëren.
Bijvoorbeeld:
calculate_total_cost(500, 250, 100)
Hier wordt *prices (500, 250, 100).
Willekeurige keyword-argumenten (**kwargs)
**kwargs verzamelt alle benoemde (keyword) argumenten in een dictionary.
Hierdoor kan de functie extra benoemde instellingen accepteren, zoals discount of tax, zelfs als deze niet vooraf zijn gedefinieerd.
Bijvoorbeeld:
calculate_total_cost(1000, 500, discount=10, tax=5)
Hier wordt **settings {'discount': 10, 'tax': 5}.
Beide combineren
Je kunt zowel *args als **kwargs in dezelfde functie gebruiken voor maximale flexibiliteit — zodat je elk aantal positionele waarden en elke combinatie van benoemde instellingen kunt verwerken.
Plaats altijd *args vóór **kwargs in de functiedefinitie – het omdraaien van de volgorde resulteert in een SyntaxError.
Veeg om te beginnen met coderen
Implementeer een functie generate_report die een willekeurig aantal numerieke scores en optionele keyword-instellingen accepteert.
-
Gebruik
*argsom scores te verzamelen (noem de parameterscores) en**kwargsom optionele instellingen te verzamelen. -
Bereken het gemiddelde van alle opgegeven scores door alle waarden in scores op te tellen en te delen door het aantal scores:
Average=len(scores)sum(scores) -
Als er een sleutel
'label'aanwezig is in**kwargs, gebruik dan de waarde hiervan als de rapporttitel; gebruik anders'Report'. -
Als er een sleutel
'passing_score'aanwezig is in**kwargs, controleer dan of het gemiddelde deze waarde haalt of overschrijdt:- Zo ja, voeg
'Status: Pass'toe aan het rapport. - Zo nee, voeg
'Status: Fail'toe.
- Zo ja, voeg
-
Retourneer het resultaat als een geformatteerde string:
'{label} | Average: {avg:.2f} | {status}'. Als er geen'passing_score'is opgegeven, laat dan het statusgedeelte weg:'{label} | Average: {avg:.2f}'.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.