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

Kombinasjon 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 rabatt eller skatt.

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)

I koden over vil du legge merke til linjen settings.get('discount', 0). Siden settings samler nøkkelordargumenter i en vanlig Python-ordbok, bruker du ordbokens .get()-metode for å hente verdier på en trygg måte.

Vanligvis, hvis du prøver å slå opp en nøkkel som ikke finnes i en ordbok ved å bruke hakeparenteser (som settings['discount']), vil Python krasje og kaste en KeyError. Metoden .get() forhindrer dette ved å la deg angi en standardverdi som brukes hvis nøkkelen ikke finnes.

Syntaksen fungerer slik:

dictionary.get(key, default_value)

key: navnet på innstillingen du leter etter (for eksempel 'discount' eller 'tax').
default_value: verdien som returneres hvis denne nøkkelen ikke ble sendt inn til funksjonen.

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).

Nøkkelordbaserte vilkårlige argumenter (**kwargs)

**kwargs samler alle navngitte (nøkkelord) argumenter i en ordbok. Dette gjør at funksjonen kan ta imot 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 posisjonelle verdier og enhver kombinasjon av navngitte innstillinger.

Note
Merk

Plasser alltid *args før **kwargs i funksjonssignaturen – å bytte 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 ved å summere alle verdiene i scores og dele på antall poengsummer:
    Average=sum(scores)len(scores)\text{Average} = \frac{\text{sum}(scores)}{\text{len}(scores)}

  3. Hvis en 'label'-nøkkel finnes i **kwargs, bruk verdien som rapporttittel; ellers bruk 'Report'.

  4. Hvis en 'passing_score'-nøkkel finnes 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