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?
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
:
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:
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.