Heim >Backend-Entwicklung >Python-Tutorial >*args und **kwargs in Python verstehen

*args und **kwargs in Python verstehen

Susan Sarandon
Susan SarandonOriginal
2025-01-16 22:16:13547Durchsuche

Understanding *args and **kwargs in Python

Die wunderbare Verwendung von *args und **kwargs in Python: das Geheimnis flexibler Funktionen

In Python sind *args und **kwargs leistungsstarke Werkzeuge zum Erstellen flexibler Funktionen, die es Funktionen ermöglichen, eine variable Anzahl von Argumenten zu akzeptieren. Dies ist besonders nützlich, wenn Sie nicht im Voraus wissen, wie viele Argumente an die Funktion übergeben werden.


Was ist *args?

*args ermöglicht einer Funktion, eine beliebige Anzahl von Positionsargumenten zu akzeptieren. Diese Parameter werden in einem Tupel gespeichert.

Beispiel:

<code class="language-python">def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3, 4, 5)</code>

Ausgabe:

<code>1
2
3
4
5</code>

Hier können Sie beliebig viele Zahlen eingeben und diese werden alle gedruckt. Wenn keine Argumente übergeben werden, ist args nur ein leeres Tupel.


Was ist **kwargs?

**kwargs ermöglicht einer Funktion, eine beliebige Anzahl von Schlüsselwortargumenten zu akzeptieren. Diese Parameter werden in einem Wörterbuch gespeichert, wobei die Schlüssel die Parameternamen und die Werte die entsprechenden Werte sind.

Beispiel:

<code class="language-python">def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="New York")</code>

Ausgabe:

<code>name: Alice
age: 25
city: New York</code>

Hier können beliebig viele Schlüssel-Wert-Paare übergeben werden. Wenn keine Schlüsselwortargumente übergeben werden, ist kwargs lediglich ein leeres Wörterbuch.


In Kombination verwenden *args und **kwargs

Sie können sowohl *args als auch **kwargs in derselben Funktion verwenden. Dadurch können Sie sowohl Positions- als auch Schlüsselwortargumente verarbeiten.

Beispiel:

<code class="language-python">def describe_person(*args, **kwargs):
    print("Attributes:")
    for arg in args:
        print(f"- {arg}")

    print("\nDetails:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

describe_person("Friendly", "Helpful", name="Bob", age=30, city="Boston")</code>

Ausgabe:

<code>Attributes:
- Friendly
- Helpful

Details:
name: Bob
age: 30
city: Boston</code>

Hier sammelt *args Positionsparameter (z. B. „Freundlich“ und „Hilfreich“) und **kwargs Schlüsselwortparameter (z. B. Name="Bob" und Alter=30).


Einfache Gedächtnisregeln

  1. Verwenden Sie , wenn Sie eine variable Anzahl von Positionsargumenten*args übergeben müssen.
  2. Verwenden Sie , wenn Sie eine variable Anzahl von Schlüsselwortargumenten**kwargs übergeben müssen.
  3. Die Reihenfolge in einer Funktionssignatur sollte immer sein:
    • Allgemeine Positionsparameter
    • *args
    • Standard-Keyword-Parameter
    • **kwargs

Praxisbeispiele für Einsteiger

Beispiel 1: Eine Funktion zum Addieren von Zahlen

<code class="language-python">def add_numbers(*args):
    total = sum(args)
    print(f"The sum is: {total}")

add_numbers(1, 2, 3, 4)
add_numbers(10, 20)</code>

Ausgabe:

<code>The sum is: 10
The sum is: 30</code>

Beispiel 2: Personen mit Namen begrüßen

<code class="language-python">def greet_people(**kwargs):
    for name, greeting in kwargs.items():
        print(f"{greeting}, {name}!")

greet_people(Alice="Hello", Bob="Hi", Charlie="Hey")</code>

Ausgabe:

<code>Hello, Alice!
Hi, Bob!
Hey, Charlie!</code>

Beispiel 3: Kombination von *args und **kwargs

in einer Einkaufsliste
<code class="language-python">def shopping_list(*items, **prices):
    print("Items to buy:")
    for item in items:
        print(f"- {item}")

    print("\nPrices:")
    for item, price in prices.items():
        print(f"{item}: ${price}")

shopping_list("Apples", "Bananas", Apples=2, Bananas=1.5, Oranges=3)</code>

Ausgabe:

<code>Items to buy:
- Apples
- Bananas

Prices:
Apples: 
Bananas: .5
Oranges: </code>

Fazit

Durch die Verwendung von *args und **kwargs können Sie Ihre Python-Funktionen dynamischer und flexibler gestalten. Dies ist besonders nützlich, wenn Sie mit Programmen arbeiten, bei denen die Anzahl der Eingaben variieren kann. Probieren Sie diese Funktionen aus, beginnend mit kleinen Projekten, und Sie werden sie sehr praktisch finden!

Das obige ist der detaillierte Inhalt von*args und **kwargs in Python verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn