Heim > Backend-Entwicklung > Python-Tutorial > Was ist „functools.partial' in Python?

Was ist „functools.partial' in Python?

Mary-Kate Olsen
Freigeben: 2024-12-02 02:37:11
Original
489 Leute haben es durchsucht

What is `functools.partial` in Python?

Lesen Sie den vollständigen Artikel auf Global News One

Was ist functools.partial?

functools.partial erstellt eine neue Funktion, indem es Argumente teilweise auf eine vorhandene Funktion anwendet. Dies ist hilfreich, um Funktionsaufrufe in Szenarien zu vereinfachen, in denen bestimmte Argumente sich wiederholen oder festgelegt sind.

Mit der Funktion functools.partial in Python können Sie einen Teil der Argumente oder Schlüsselwörter einer Funktion „einfrieren“ und so eine neue Funktion mit weniger Parametern erstellen. Dies ist besonders nützlich, wenn Sie bestimmte Parameter einer Funktion festlegen und andere flexibel halten möchten.

from functools import partial
Nach dem Login kopieren
Nach dem Login kopieren

Grundlegende Syntax

partial(func, *args, **kwargs)
Nach dem Login kopieren
Nach dem Login kopieren
  • func: Die teilweise anzuwendende Funktion.
  • *args: Zu korrigierende Positionsargumente.
  • `kwargs`**: Zu behebende Schlüsselwortargumente.

Das zurückgegebene Objekt ist eine neue Funktion, bei der die festen Argumente „eingefroren“ sind und Sie beim Aufruf der neuen Funktion nur die verbleibenden Argumente angeben müssen.


Beispiele

1. Argumente teilweise klären

def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100
Nach dem Login kopieren
Nach dem Login kopieren

Hier erstellt „partial“ eine neue Funktion quadrat, die immer Exponent=2 verwendet.


2. Funktionsaufrufe vereinfachen

Angenommen, Sie haben eine Funktion mit mehreren Argumenten und rufen sie oft mit einigen festen Werten auf.

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!
Nach dem Login kopieren
Nach dem Login kopieren

3. Teilweise zur Verwendung bei der Kartierung

Sie können „partial“ verwenden, um eine Funktion für Operationen wie „map“ anzupassen.

def multiply(x, y):
    return x * y

# Fix y = 10
multiply_by_10 = partial(multiply, y=10)

# Use in a map
numbers = [1, 2, 3, 4]
result = map(multiply_by_10, numbers)
print(list(result))  # Output: [10, 20, 30, 40]
Nach dem Login kopieren

4. Teilweise mit Funktionen, die Standardargumente haben

Partial funktioniert nahtlos mit Funktionen, die bereits über Standardargumente verfügen.

def add(a, b=10):
    return a + b

# Fix b to 20
add_with_20 = partial(add, b=20)
print(add_with_20(5))  # Output: 25
Nach dem Login kopieren

5. Kombination mit anderen Bibliotheken (z. B. Pandas oder JSON)

Sie können Partial mit Bibliotheken wie Pandas verwenden, um sich wiederholende Vorgänge zu vereinfachen.

from functools import partial
Nach dem Login kopieren
Nach dem Login kopieren

Wann functools.partial verwendet werden sollte

  1. Wiederverwendbare Logik:
    • Wenn Sie wiederverwendbare Versionen einer Funktion mit festen Argumenten erstellen möchten.
  2. Rückrufe vereinfachen:
    • Nützlich für Bibliotheken wie Tkinter, Asyncio oder Threading, wo Rückrufe oft einfachere Signaturen erfordern.
  3. Funktionale Programmierung:
    • Funktioniert gut mit Karten-, Filter- oder ähnlichen Vorgängen.
  4. Verbesserung der Lesbarkeit:
    • Macht den Code sauberer, indem redundante Argumente reduziert werden.

Hinweise und Best Practices

  • Teilfunktionen prüfen: Sie können die eingefrorenen Argumente einer Teilfunktion mithilfe von „partial.func“, „partial.args“ und „partial.keywords“ untersuchen.
partial(func, *args, **kwargs)
Nach dem Login kopieren
Nach dem Login kopieren
  • Flexibilität: Sie können eingefrorene Argumente beim Aufruf der Teilfunktion überschreiben.
def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100
Nach dem Login kopieren
Nach dem Login kopieren

Fortgeschrittenes Beispiel: Verwendung von Partial für Funktionen höherer Ordnung

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!
Nach dem Login kopieren
Nach dem Login kopieren

Die Verwendung von functools.partial kann Ihren Code vereinfachen und bereinigen, insbesondere wenn es um sich wiederholende Funktionsaufrufe oder Funktionen höherer Ordnung geht. Lassen Sie mich wissen, wenn Sie weitere Beispiele oder erweiterte Anwendungsfälle wünschen!

Das obige ist der detaillierte Inhalt vonWas ist „functools.partial' in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage