Python Functools Teilfunktion
Functools sind das Standard-Framework, das in Python verwendet wird, wenn mit höherwertigen Funktionen gearbeitet wird, die auf andere Funktionen einwirken oder diese zurückgeben, und es hilft, die Funktionen zu erweitern oder zu verwenden, ohne sie neu zu schreiben. Die Verwendung von Functools macht den Code lesbar und erleichtert die Wartung mit hoher Effizienz.
Diese Bibliothek enthält zwei Hauptfunktionen: partial
und partialmethod
. Die partialmethod
ist ein nicht aufrufbarer Methodendeskriptor einer bereits definierten Funktion für bestimmte Argumente und gibt einen neuen partialmethod
-Deskriptor zurück.
Schauen wir uns die Funktion partial()
an.
Verwenden Sie die Funktion partial()
von Functools in Python
Die Funktion partial()
ist eine Funktion höherer Ordnung, die eine Funktion als Eingabe nimmt und eine Funktion zurückgibt, die in einem Programm wie andere Funktionen verwendet werden kann. Wenn es eine Funktion mit vielen Argumenten gibt, wir aber jedes Mal, wenn wir diese Funktion verwenden, nur ein oder zwei Argumente ändern müssen, hilft die Funktion partial()
, die mit der Functools-Bibliothek geliefert wird, in solchen Situationen.
Mit Hilfe der Funktion partial()
können wir eine bestimmte Anzahl von Argumenten einer Funktion einfrieren und eine neue vereinfachte erstellen, um ein neues partial()
-Objekt mit Positionsargumenten und Schlüsselwörtern zurückzugeben. Daher hindert es uns daran, die ursprüngliche Funktion neu zu schreiben.
Insgesamt ist partial()
ein praktisches Werkzeug, insbesondere um verschiedene Eingaben auf ein einzelnes Objekt anzuwenden oder eines der Argumente der Funktion so zu verpacken, dass es konstant ist. Das Endergebnis der Verwendung der Funktion partial()
wird also einen eleganten, lesbaren und wiederverwendbaren Code ausgeben.
Bevor wir die Funktion partial()
verwenden, müssen wir sie aus der Functools-Bibliothek importieren. Mal sehen, wie wir die Funktion implementieren.
from functools import partial
Da wir die Bibliothek partial
mit dem obigen Code importiert haben, können wir den Befehl partial
wie unten verwenden. Dann können wir die Funktion partial()
nach Belieben aufrufen und sie gibt die Funktion ähnlich der definierten Funktion zusammen mit einem festen Wert aus.
Nachfolgend die standardisierte partial()
-Funktion und ihre Attribute.
partial(func, /, *args, **keywords)
Die partielle
Funktion besteht aus drei Hauptattributen: Funktion, Argumente und Schlüsselwörter.
partial.func
(Funktionsname) – Ein aufrufbares Objekt oder eine Funktion, die den Namen und die hexadezimale Adresse der übergeordneten Funktion zurückgibt.partial.args
(Positionsargumente) – Dieses Attribut gibt die vorab zugewiesenen Argumente an die Funktionpartial()
zurück.partial.keyword
(Schlüsselwortargumente) – Dieses Attribut gibt die vorab zugewiesenen Schlüsselwörter an diepartial()
-Funktion zurück.
Lassen Sie uns ein Beispiel mit der Funktion partial()
und ihren Attributen definieren.
Vollständiger Code:
from functools import partial
# original function
def multiply(a, b):
return a * b
# partial function to multiply a as 2
multiplication1 = partial(multiply, 2)
print(multiplication1(4))
# partial function to multiply b as 7
multiplication2 = partial(multiply, b=7)
print(multiplication2(3))
# simple multiply function with two variables
print(multiply(5, 2))
# partial function with two values and multiply function
multiplication3 = partial(multiply, 2, 5)
print(multiplication3())
# defining some attributes in multiplication1, multiplication2 multiplication3
print("Function used in multiplication1 :", multiplication1.func)
print("Keywords for multiplication2 :", multiplication2.keywords)
print("Arguments for multiplication3 :", multiplication3.args)
Ausgang:
Zuerst haben wir die Funktion partial()
aus functools
importiert und eine Funktion namens multiply()
mit zwei Variablen als a
und b
definiert. Diese Multiplizieren
-Funktion multipliziert zwei Zahlen (a,b)
miteinander.
from functools import partial
def multiply(a, b):
return a * b
Im folgenden Code-Chunk wird die Funktion partial()
aufgerufen und gibt ein Funktionsobjekt multiply()
zusammen mit einem festen Wert von 2
aus. Hier ruft die Funktion partial()
die Funktion multiply()
mit a
als 2
auf.
Beim Drucken weist es 4
für b
zu und druckt das Ergebnis als 8
.
multiplication1 = partial(multiply, 2)
print(multiplication1(4))
Wenn hier die Funktion partial()
aufgerufen wird, gibt sie die Funktion multiply()
und den für b
zugewiesenen Wert als 3.
aus. Sie hat den Wert für die Variable b
angegeben, indem sie den Parameter der ursprünglichen Funktion übersprungen hat.
Beim Drucken hat es einen Wert für a
als 3
definiert und zeigt die Ausgabe als 21
an.
multiplication2 = partial(multiply, b=7)
print(multiplication2(3))
Die Funktion partial()
ist nicht unbedingt erforderlich, wenn die Funktion mit Werten für zwei Variablen aufgerufen wird. Wie üblich nimmt es 5
für a
, 2
für b
und gibt das Ergebnis als 10
aus.
print(multiply(5, 2))
Da die ursprüngliche Funktion beim Aufruf der Funktion partial()
zwei Parameter hat, ist dies kein Problem, und sie nimmt multiply()
mit a
als 2
und b
als 5
. Dann zeigt es das Ergebnis als 10
an.
multiplication3 = partial(multiply, 2, 5)
print(multiplication3())
Der folgende Codeabschnitt zeigt die in der Funktion multiplication1
verwendete Funktion, Schlüsselwörter in multiplication2
bzw. Argumente in multiplication3
. Die in multiplication1
verwendete Funktion ist also multiply()
und ihr hexadezimaler Wert ist 000001E523A6E4C0
.
In multiplication2
haben wir {'b': 7}
als Schlüsselwörter verwendet, während 2, 5
die Argumente sind, die in multiplication3
verwendet werden.
print("Function used in multiplication1 :", multiplication1.func)
print("Keywords for multiplication2 :", multiplication2.keywords)
print("Arguments for multiplication3 :", multiplication3.args)
Abschluss
In diesem Artikel wurde die Funktion partial()
der Bibliothek functools
besprochen. Wie Sie in den vorherigen Beispielen gesehen haben, macht die Verwendung der Funktion partial()
unseren Code lesbarer, eleganter und schneller.
Wenn Sie eine Funktion finden, die ein oder mehrere Argumente einfriert, ist die Funktion partial()
die beste für diese Situation.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.