single
Kombination von Positionsabhängigen und Benannten Beliebigen Argumenten
Swipe um das Menü anzuzeigen
Betrachte eine Funktion, die die Gesamtkosten mehrerer Artikel berechnet und es ermöglicht, beliebig viele Preise sowie optionale Schlüsselwort-Einstellungen wie Rabatte oder Steuern zu übergeben.
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)
Regeln für die Kombination von beliebigen Argumenten
Positionsabhängige beliebige Argumente (*args)
*args sammelt alle zusätzlichen positionsabhängigen Argumente in einem Tupel.
In diesem Beispiel kann die Funktion beliebig viele Artikelpreise aufnehmen, ohne dass diese explizit definiert werden müssen.
Beispiel:
calculate_total_cost(500, 250, 100)
Hier wird *prices zu (500, 250, 100).
Beliebige Schlüsselwortargumente (**kwargs)
**kwargs sammelt alle benannten (Schlüsselwort-)Argumente in einem Dictionary.
Dies ermöglicht es der Funktion, zusätzliche benannte Einstellungen wie discount oder tax zu akzeptieren, auch wenn diese nicht vordefiniert wurden.
Beispiel:
calculate_total_cost(1000, 500, discount=10, tax=5)
Hier wird **settings zu {'discount': 10, 'tax': 5}.
Kombination beider Varianten
Sowohl *args als auch **kwargs können in derselben Funktion verwendet werden, um maximale Flexibilität zu erreichen – so können beliebig viele Positionswerte und beliebige Kombinationen benannter Einstellungen verarbeitet werden.
*args immer vor **kwargs in der Funktionssignatur platzieren – eine umgekehrte Reihenfolge führt zu einem SyntaxError.
Wischen, um mit dem Codieren zu beginnen
Implementierung einer Funktion generate_report, die eine beliebige Anzahl numerischer Bewertungen sowie optionale Schlüsselwort-Einstellungen akzeptiert.
- Verwendung von
*args, um Bewertungen zu sammeln (Parametername:scores), und**kwargs, um optionale Einstellungen zu erfassen. - Berechnung des Durchschnitts aller angegebenen Bewertungen.
- Falls ein Schlüssel
"label"in**kwargsvorhanden ist, dessen Wert als Berichtstitel verwenden; andernfalls"Report"nutzen. - Falls ein Schlüssel
"passing_score"in**kwargsvorhanden ist, prüfen, ob der Durchschnitt diesen Wert erreicht oder übersteigt:- Falls ja,
"Status: Pass"zum Bericht hinzufügen. - Falls nein,
"Status: Fail"hinzufügen.
- Falls ja,
- Rückgabe des Ergebnisses als formatierter String:
"{label} | Average: {avg:.2f} | {status}". Falls kein"passing_score"angegeben ist, den Status-Teil weglassen:"{label} | Average: {avg:.2f}".
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen