implementiert functools.partial, das zusätzliche Argumente vorstellt

8

In der Dokumentation zu functools.partial steht, dass es ungefähr gleichwertig ist zu ":

%Vor%

Wenn ich eine Version implementieren wollte, die die zusätzlichen Argumente vorgibt, Es scheint, als müsste ich nur die angezeigte Linie ändern.

Gibt es irgendwelche anderen Features / Fehler, über die ich mich beim Kopieren dieses Codes Sorgen machen sollte?

    
Dave 06.08.2012, 15:16
quelle

2 Antworten

6

Betrachtet man den Quellcode für _functoolsmodule.c , denke ich nicht es gibt viel zu sorgen.

Die Modulimplementierung von partial behandelt pickling und repr , aber alles andere sieht so aus, als ob es in der Dokumentation funktioniert. Vermutlich ist der Grund, warum es in C implementiert ist, nur Effizienz. Es gibt auch die Tatsache, dass es ein Typ ist und nicht nur eine Funktionsschließung.

Beachten Sie jedoch, dass func , args und keywords im Dokumentationsbeispiel rein kosmetischer Natur sind. Sie sind nicht überschreibbar wie bei tatsächlichen functools.partial Instanzen. Eine Alternative wäre die Unterklasse functools.partial :

%Vor%     
ecatmur 06.08.2012, 15:50
quelle
0

Eine Falle besteht darin, wie Ihre teilweise Zuweisung mit beliebigen Argumenten umgehen würde, wie im folgenden Beispiel:

%Vor%

Wenden Sie nun f teilweise auf die Argumente 1 und 2 an:

%Vor%

Was ist der Wert des Parameters b in g ? Ist es 1, oder wartet es immer noch auf einen Wert? Was ist der Wert von a ? Anders ausgedrückt: Wie viele der bereitgestellten Argumente sollten gegebenenfalls als zusätzliche Argumente behandelt werden.

    
chepner 06.08.2012 15:41
quelle

Tags und Links