single
Kombination af Positionelle og Navngivne Vilkårlige Argumenter
Stryg for at vise menuen
Overvej en funktion, der beregner den samlede pris for flere varer, hvor du kan angive et vilkårligt antal priser samt valgfrie nøgleord-indstillinger såsom rabatter eller skatter.
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)
I koden ovenfor vil du bemærke linjen settings.get('discount', 0).
Da settings samler nøgleord-argumenter i en standard Python-ordbog, bruger du ordbogens .get()-metode til at hente værdier sikkert.
Normalt, hvis du forsøger at slå en nøgle op, der ikke findes i en ordbog ved hjælp af kantede parenteser (som settings['discount']), vil Python stoppe og give en KeyError. Metoden .get() forhindrer dette ved at lade dig angive en standardværdi som reserve.
Syntaksen fungerer sådan her:
dictionary.get(key, default_value)
key: navnet på den indstilling, du leder efter (f.eks. 'discount' eller 'tax').
default_value: værdien der returneres, hvis denne nøgle ikke blev givet til funktionen.
Regler for kombination af arbitrære argumenter
Positionelle arbitrære argumenter (*args)
*args samler alle ekstra positionelle argumenter i en tuple.
I dette eksempel kan funktionen tage et vilkårligt antal varepriser uden at skulle definere dem eksplicit.
For eksempel:
calculate_total_cost(500, 250, 100)
Her bliver *prices til (500, 250, 100).
Navngivne arbitrære argumenter (**kwargs)
**kwargs samler alle navngivne (keyword) argumenter i en ordbog.
Dette gør det muligt for funktionen at acceptere yderligere navngivne indstillinger såsom discount eller tax, selvom de ikke var foruddefinerede.
For eksempel:
calculate_total_cost(1000, 500, discount=10, tax=5)
Her bliver **settings til {'discount': 10, 'tax': 5}.
Kombination af begge
Du kan bruge både *args og **kwargs i den samme funktion for at opnå maksimal fleksibilitet — hvilket gør det muligt at håndtere et vilkårligt antal positionelle værdier og enhver kombination af navngivne indstillinger.
Placer altid *args før **kwargs i funktionssignaturen – hvis rækkefølgen byttes om, vil det resultere i en SyntaxError.
Swipe to start coding
Implementér en generate_report-funktion, der accepterer et vilkårligt antal numeriske karakterer og valgfrie nøgleord-indstillinger.
-
Brug
*argstil at indsamle karakterer (navngiv parameterenscores) og**kwargstil at indsamle valgfrie indstillinger. -
Beregn gennemsnittet af alle angivne karakterer ved at summere alle værdier i scores og dividere med antallet af scores:
Average=len(scores)sum(scores) -
Hvis en
'label'-nøgle findes i**kwargs, bruges dens værdi som rapporttitel; ellers bruges'Report'. -
Hvis en
'passing_score'-nøgle findes i**kwargs, kontroller om gennemsnittet opfylder eller overstiger denne:- Hvis ja, tilføjes
'Status: Pass'til rapporten. - Hvis nej, tilføjes
'Status: Fail'.
- Hvis ja, tilføjes
-
Returnér resultatet som en formateret streng:
'{label} | Average: {avg:.2f} | {status}'. Hvis ingen'passing_score'er angivet, udelades statusdelen:'{label} | Average: {avg:.2f}'.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat