Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kombinasjon av posisjonelle og navngitte vilkårlige argumenter | Vilkårlige Argumenter
Python Funksjoner Veiledning
Seksjon 3. Kapittel 3
single

single

bookKombinasjon av posisjonelle og navngitte vilkårlige argumenter

Sveip for å vise menyen

Tenk deg en funksjon som beregner den totale kostnaden for flere varer, samtidig som du kan sende inn et vilkårlig antall priser og valgfrie nøkkelordinnstillinger som rabatter eller avgifter.

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 kombinasjon av vilkårlige argumenter

Posisjonelle vilkårlige argumenter (*args)

*args samler alle ekstra posisjonelle argumenter i en tuple. I dette eksempelet kan funksjonen ta imot et vilkårlig antall varepriser uten å måtte definere dem eksplisitt.

For eksempel:

calculate_total_cost(500, 250, 100)

Her blir *prices til (500, 250, 100).

Vilkårlige nøkkelordargumenter (**kwargs)

**kwargs samler alle navngitte (nøkkelord) argumenter i en ordbok. Dette gjør at funksjonen kan motta ekstra navngitte innstillinger som discount eller tax, selv om de ikke var forhåndsdefinert.

For eksempel:

calculate_total_cost(1000, 500, discount=10, tax=5)

Her blir **settings til {'discount': 10, 'tax': 5}.

Kombinasjon av begge

Det er mulig å bruke både *args og **kwargs i samme funksjon for maksimal fleksibilitet – slik kan man håndtere et vilkårlig antall posisjonsverdier og enhver kombinasjon av navngitte innstillinger.

Note
Merk

Plasser alltid *args før **kwargs i funksjonssignaturen – motsatt rekkefølge vil føre til en SyntaxError.

Oppgave

Sveip for å begynne å kode

Implementer en generate_report-funksjon som godtar et vilkårlig antall numeriske poengsummer og valgfrie nøkkelordinnstillinger.

  1. Bruk *args for å samle poengsummer (gi parameteren navnet scores) og **kwargs for å samle valgfrie innstillinger.
  2. Beregn gjennomsnittet av alle oppgitte poengsummer.
  3. Hvis en "label"-nøkkel er til stede i **kwargs, bruk verdien som rapporttittel; ellers bruk "Report".
  4. Hvis en "passing_score"-nøkkel er til stede i **kwargs, sjekk om gjennomsnittet oppfyller eller overstiger denne:
    • Hvis ja, legg til "Status: Pass" i rapporten.
    • Hvis nei, legg til "Status: Fail".
  5. Returner resultatet som en formatert streng: "{label} | Average: {avg:.2f} | {status}". Hvis ingen "passing_score" er oppgitt, utelat statusdelen: "{label} | Average: {avg:.2f}".

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt