Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Beliebige Positionsargumente | Beliebige Argumente
Python-Funktionen-Tutorial
Abschnitt 3. Kapitel 1
single

single

Beliebige Positionsargumente

Swipe um das Menü anzuzeigen

Sie kennen bereits positionsabhängige und optionale Argumente. Wenn eine Funktion jedoch viele Eingaben erhalten kann oder diese im Voraus nicht bekannt sind, können beliebige positionsabhängige Argumente verwendet werden. Sie ermöglichen es einer Funktion, eine beliebige Anzahl von Werten zu akzeptieren.

Note
Hinweis

Jedes Argument kann eine beliebige Datenstruktur sein (Liste, Dict, usw.). Beliebige Argumente ermöglichen es, so viele solcher Objekte wie nötig zu übergeben.

Um beliebige positionsabhängige Argumente zu definieren, wird ein Sternchen * vor den Parameternamen gesetzt. Beispiel:

12345678
# Define function with arbitrary positional arguments named values def calculate_sum(*values): return sum(values) # Test the function using different number of arguments print(calculate_sum(1, 2, 3)) print(calculate_sum(1, 2, 3, 4)) print(calculate_sum(1, 2, 3, 4, 5))

Hier sammelt *values alle übergebenen Positionsargumente in einem Tupel. Innerhalb der Funktion wird der Variablenname ohne * verwendet. Das Ergebnis ist unabhängig von der Anzahl der übergebenen Argumente korrekt.

Note
Hinweis

Obwohl jeder Name funktioniert, ist die gebräuchliche und lesbare Form *args.

1234567891011121314
def example_function(*args): print(type(args)) print(args) for arg in args: print(arg) print('Call without arguments:') example_function() print('\nCall with one argument:') example_function(1) print('\nCall with multiple arguments:') example_function(1, 2, 3, 'hello', [4, 5, 6])

Wie gezeigt:

  • Keine Argumente → args ist ();
  • Ein Argument → (1,);
  • Mehrere Argumente → alle Werte erscheinen in einem Tupel, z. B. (1, 2, 3, 'hello', [4, 5, 6]).

*args verhält sich wie jedes andere Tupel und bietet volle Flexibilität beim Umgang mit vielen Eingaben.

Da *args einfach ein Tupel ist, kann jede beliebige Logik auf dessen Werte angewendet werden – einschließlich Bedingungen. Beispielsweise kann nach der Summierung aller Preise die Gesamtsumme überprüft und je nach Ergebnis unterschiedliche Regeln angewendet werden.

Umgang mit leeren Argumenten

Da *args die Eingaben in ein Tupel sammelt, besteht die Möglichkeit, dass eine Funktion ohne Übergabe von Argumenten aufgerufen wird (example_function()). In diesem Fall ist args ein leeres Tupel: ().

Es ist bewährte Praxis, zu prüfen, ob *args leer ist, bevor Daten verarbeitet werden. Dies ist einfach, da leere Tupel in Python als "falsch" gelten. Hier sind zwei gängige Methoden, um mit einem leeren *args-Tupel umzugehen.

Verwendung von if not args

Mit if not args kann ein leeres Tupel erkannt und direkt behandelt werden, zum Beispiel durch Rückgabe von 0 oder einer individuellen Nachricht.

1234567891011
def calculate_average(*prices): # Checking if the tuple is empty if not prices: return 'No prices provided!' # If it's not empty, proceed with the calculation return sum(prices) / len(prices) # Testing the function print(calculate_average(10, 20, 30)) # Output: 20.0 print(calculate_average()) # Output: No prices provided!

Überprüfen der Länge mit len()

Alternativ kann geprüft werden, ob die Gesamtanzahl der Argumente mit der Funktion len() gleich null ist:

1234567
def strict_sum(*values): if len(values) == 0: print('Warning: No values received.') return 0 return sum(values) print(strict_sum()) # Output: Warning: No values received. -> 0
Aufgabe

Wischen, um mit dem Codieren zu beginnen

Implementieren einer Funktion calculate_total, die den Gesamtpreis der Artikel im Warenkorb berechnet und Rabatte basierend auf dem Gesamtbetrag anwendet.

  1. Verwendung von beliebigen Positionsargumenten mit dem Namen prices in der Funktion calculate_total.
  2. Falls keine Argumente übergeben werden, Rückgabe von 'Your cart is empty.'.
  3. Rabatte sind gegenseitig ausschließend – es wird nur der höchste anwendbare Rabatt gewährt:
    • 20 % Rabatt bei einem Gesamtbetrag von $200 oder mehr.
    • 10 % Rabatt bei einem Gesamtbetrag von $100 oder mehr.
    • Andernfalls kein Rabatt.
  4. Rückgabe des Endbetrags als formatierter String: 'Final total: $X.XX'.

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 1
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