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 rabatter eller avgifter.
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)
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.
Plasser alltid *args før **kwargs i funksjonssignaturen – motsatt rekkefølge vil føre til en SyntaxError.
Sveip for å begynne å kode
Implementer en generate_report-funksjon som godtar et vilkårlig antall numeriske poengsummer og valgfrie nøkkelordinnstillinger.
- Bruk
*argsfor å samle poengsummer (gi parameteren navnetscores) og**kwargsfor å samle valgfrie innstillinger. - Beregn gjennomsnittet av alle oppgitte poengsummer.
- Hvis en
"label"-nøkkel er til stede i**kwargs, bruk verdien som rapporttittel; ellers bruk"Report". - 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".
- Hvis ja, legg til
- 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
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår