Partielle Funktionen in Python werden von Benutzern über das functools-Modul aufgerufen.
Partielle Funktionsanwendung
Wenn eine Funktion ausgeführt wird, muss sie mit allen erforderlichen Parametern aufgerufen werden. Manchmal können Parameter jedoch im Voraus bekannt sein, bevor die Funktion aufgerufen wird. In diesem Fall können ein oder mehrere Parameter einer Funktion vorab festgelegt werden, sodass die Funktion mit weniger Parametern aufgerufen werden kann.
Eine partielle Funktion nimmt die zu curryende Funktion als erstes Argument der Funktion partial() entgegen, und die Argumente der ursprünglichen Funktion werden als nachfolgende Argumente an partial() übergeben, sofern keine Schlüsselwortargumente verwendet werden.
Eine verbale Beschreibung reicht möglicherweise nicht aus, um zu verstehen, wie partielle Funktionen verwendet werden; deshalb veranschaulichen wir dies anhand eines gängigen Beispiels. In diesem Beispiel implementieren wir eine Modulo-Funktion, die für die ganze Zahl 100 den Rest von 100%m für verschiedene Werte von m ermittelt.
from functools import partial def mod( n, m ): return n % m mod_by_100 = partial( mod, 100 ) print mod( 100, 7 ) # 2 print mod_by_100( 7 ) # 2
Da die zuvor gesehenen Beispiele im Allgemeinen Addition oder Multiplikation verwenden, vermitteln sie nicht das Positionsproblem von Argumenten partieller Funktionen, was leicht den falschen Eindruck erwecken kann, dass das zweite Argument von partial auch das zweite Argument der ursprünglichen Funktion ist. Deshalb wähle ich hier mod zur Erklärung.
Bei Schlüsselwortargumenten müssen Sie weder die Argumentpositionen noch die Argumentanzahl der ursprünglichen Funktion beachten. Sehen wir uns unten ein weiteres Beispiel an, das zeigt, wie Konvertierungen zwischen verschiedenen Zahlensystemen durchgeführt werden.
from functools import partial bin2dec = partial( int, base=2 ) print bin2dec( '0b10001' ) # 17 print bin2dec( '10001' ) # 17 hex2dec = partial( int, base=16 ) print hex2dec( '0x67' ) # 103 print hex2dec( '67' ) # 103
Diese Anwendungen partieller Funktionen mögen einfach erscheinen, aber sie sind sehr nützlich. Sie können das DRY-Prinzip effektiv befolgen und Programmierkosten sparen.
Nachdruck aus Pythoner
Artikellink: http://www.pythoner.com/54.html