Ich habe überall nachgesehen, aber es ist ein schweres Thema, ohne viel Lärm zu suchen. Ich möchte so etwas machen:
%Vor%Aber ich bekomme Fehler bei der Zuweisung zur Cube-Funktion wie:
%Vor%Gibt es in Python keine Funktionsalgebra oder mache ich nur einen dummen Fehler?
edit: viel später las ich Pythons offizielles Intro zur funktionalen Programmierung ( Ссылка ) und in Richtung der unten bezieht es sich auf ein Paket von Drittanbietern "funktional" ( Ссылка ), das Funktionen zusammenstellen kann, dh:
%Vor% Ich glaube nicht, dass Sie das tun können. Mit der __call__
magic-Methode können Sie jedoch eine eigene aufrufbare Klasse definieren, die als Funktion fungiert und für die Sie % __add__
definieren können:
Hier wird +
auf punktweise Addition und *
auf Komposition überladen. Natürlich können Sie alles tun, was Sie wollen.
Interessante Frage für die Python-Gurus: Warum funktioniert das Folgende nicht (dreckiger Hack, obwohl es ist)?
%Vor%Ein bisschen spät, aber diese Art von Algebra kann leicht mit Lambda-Funktionen durchgeführt werden:
%Vor%(f und g müssen keine Lambda-Funktionen sein)
Sie können damit alle möglichen interessanten Dinge tun. Angenommen, Sie möchten die Funktion f(x) = 1 + x + x**2 + ... + x**n
für eine gegebene n
definieren. Sie können tun:
Um zu verstehen, warum ich das Lambda so gemacht habe ( lambda x, j = i + 1, k = f:
) ist es besser das zu lesen: Ссылка
Lange Rede, kurzer Sinn: Die Parameter in einer Lambda-Funktion haben keine lokale Kopie. Wenn ich i
aus der Schleife wie in lambda x, k = f: k(x) + x**(i + 1)
verwendet hätte, hätten wir die Funktion f(x) = 1 + x**3 + x**3 + x**3
gehabt.
Tags und Links python functional-programming operators