Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kombination af positionelle og navngivne vilkårlige argumenter | Vilkårlige Argumenter
Python Funktioner Vejledning
Sektion 3. Kapitel 3
single

single

bookKombination af positionelle og navngivne vilkårlige argumenter

Stryg for at vise menuen

Overvej en funktion, der beregner den samlede pris for flere varer, samtidig med at du kan angive et vilkårligt antal priser og valgfrie nøgleord-indstillinger såsom rabatter eller skatter.

12345678910111213141516171819202122232425
def 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)
copy

Regler for kombination af vilkårlige argumenter

Positionelle vilkårlige 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).

Vilkårlige nøgleordsargumenter (**kwargs)

**kwargs samler alle navngivne (nøgleords-)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

Det er muligt at bruge både *args og **kwargs i 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.

Note
Bemærk

Placer altid *args før **kwargs i funktionssignaturen – hvis rækkefølgen byttes om, vil det resultere i en SyntaxError.

Opgave

Swipe to start coding

Implementér en generate_report-funktion, der accepterer et vilkårligt antal numeriske karakterer og valgfrie nøgleord-indstillinger.

  1. Brug *args til at indsamle karakterer (navngiv parameteren scores) og **kwargs til at indsamle valgfrie indstillinger.
  2. Beregn gennemsnittet af alle angivne karakterer.
  3. Hvis en "label"-nøgle er til stede i **kwargs, bruges dens værdi som rapporttitel; ellers bruges "Report".
  4. Hvis en "passing_score"-nøgle er til stede i **kwargs, kontroller om gennemsnittet opfylder eller overstiger denne:
    • Hvis ja, tilføjes "Status: Pass" til rapporten.
    • Hvis nej, tilføjes "Status: Fail".
  5. 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

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 3
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt