Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Kombination von Positionsabhängigen und Benannten Beliebigen Argumenten | Beliebige Argumente
Python-Funktionen-Tutorial
Abschnitt 3. Kapitel 3
single

single

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

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

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.

Note
Hinweis

*args immer vor **kwargs in der Funktionssignatur platzieren – eine umgekehrte Reihenfolge führt zu einem SyntaxError.

Aufgabe

Wischen, um mit dem Codieren zu beginnen

Implementierung einer Funktion generate_report, die eine beliebige Anzahl numerischer Bewertungen sowie optionale Schlüsselwort-Einstellungen akzeptiert.

  1. Verwendung von *args, um Bewertungen zu sammeln (Parametername: scores), und **kwargs, um optionale Einstellungen zu erfassen.
  2. Berechnung des Durchschnitts aller angegebenen Bewertungen.
  3. Falls ein Schlüssel "label" in **kwargs vorhanden ist, dessen Wert als Berichtstitel verwenden; andernfalls "Report" nutzen.
  4. Falls ein Schlüssel "passing_score" in **kwargs vorhanden 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.
  5. 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

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt