Solange die Funktion einen Wert zurückgibt, können Sie sie verketten. In jQuery gibt eine Selektormethode normalerweise den Selektor selbst zurück, wodurch Sie die Verkettung durchführen können. Wenn Sie die Verkettung in Python implementieren möchten, können Sie Folgendes tun:
%Vor%Ihr Problem scheint jedoch zu sein, dass Ihre Funktionsargumente zu eng sind. Chaining ist keine Lösung dafür. Wenn Sie Ihre Funktionsargumente verdichten möchten, weisen Sie die Argumente einfach den Variablen zu, bevor Sie sie an die Funktion übergeben:
%Vor%Hier ist eine Erweiterung von Simon's %code% Vorschlag:
%Vor%Sie könnten noch einen Schritt weitergehen und %code% act mithilfe der Sammlungen abstrakte Basisklassen . In der Tat könnten Sie %code% selbst ableiten, obwohl es Sie möglicherweise daran hindern könnte, bestimmte Dinge zu tun, die Sie möglicherweise tun müssen ... und ich weiß nicht, was die allgemeine Meinung über die Unterklasse von eingebauten Typen wie %code% ist.
Zukünftige Referenz: Werfen Sie einen Blick auf Moka , eine minimalistische funktionale Programmierung Bibliothek. Aus ihren Beispielen:
%Vor%Ich konnte zu diesem Thema bei Google nichts finden, also denke ich, ich sollte es hier fragen:
Ist es möglich, Funktionen mit Python zu ketten, wie jQuery?
%Vor%Ich verliere viel Platz und Lesbarkeit, wenn ich diesen Code schreibe:
%Vor%Es scheint eine illusorische Bibliothek für die Schaffung solcher Funktionen zu geben, aber ich kann nicht verstehen, warum das so kompliziert aussehen muss ...
Danke!
Sehen Sie sich dies an. Es ist eine einfache Wrapper-Klasse zum Verketten. Und es implementiert einige der Funktionen von underscore.js lib. Sie umhüllen Ihre Liste, Tupel oder Diktat mit einem Unterstrich und spielen mit ihm. Dann erhalten Sie den Wert, indem Sie einen weiteren Unterstrich hinzufügen.
%Vor%Ausgabe:
%Vor%Wenn wir über Objektmethoden sprechen, dann ist es trivial, nur %code% von jeder Methode. Auf der anderen Seite, wenn Sie ungebundene Funktionen ketten möchten, macht es nicht wirklich Sinn, sie so zu verketten, wie Sie wollen. Sicher, es sieht gut aus, aber es ist semantisch inkohärent, weil das "." steht für Objektattributzugriff und nicht für "Kette".