Betrachten Sie Folgendes:
%Vor%Dieser Code gibt
zurück %Vor%Da get_value eine Funktion ist, würde ich erwarten, dass die Ausführung stoppt und einen Fehler zurückgibt, aber das tut es nicht. Kann jemand erklären, warum der Python-Interpreter diese Syntax erlaubt, anstatt einen Attributfehler zu erzeugen, was mir in meinem Fall wertvolle Zeit erspart hätte.
Wie bereits erwähnt, sind Funktionen und Methoden erstklassige Objekte. Sie rufen sie auf, indem Sie einige Klammern (Klammern) an das Ende werfen. Aber es sieht so aus, als würdest du mehr Motivation dafür haben wollen, warum Python uns das sogar erlaubt. Warum sollte es uns interessieren, ob Funktionen erstklassig sind oder nicht?
Manchmal möchten Sie sie nicht aufrufen, Sie möchten einen Verweis auf die aufrufbare Funktion selbst übergeben.
%Vor% Wenn Sie Klammern nach dem obigen setzen, wird Ihr my_long_running_function
in Ihrem Haupt-Thread ausgeführt. kaum was du wolltest! Sie wollten Process
einen Verweis auf Ihre Callable geben, dass es sich in einem neuen Prozess selbst ausführen wird.
Manchmal möchten Sie nur das Callable angeben und etwas anderes lassen ...
%Vor% ( map
in diesem Fall) füllen Sie seine Argumente.
Vielleicht möchten Sie nur ein paar Aufrufer in eine Sammlung fallen lassen und die gewünschte dynamisch holen.
%Vor%Das obige ist eine Möglichkeit, String-Repräsentationen von Operatoren auf ihre tatsächliche Aktion abzubilden.
Funktionen und Methoden in Python sind auch Objekte selbst. So können Sie sie genau wie jedes andere Objekt vergleichen.
%Vor%Normalerweise würden Sie natürlich keine Methoden miteinander vergleichen oder irgendetwas anderes, weil es nicht besonders nützlich ist. Ein Ort, der nützlich ist, wenn Sie eine Funktion in eine andere Funktion übergeben möchten.
1) Ist der Rückgabewert von a.get_value () gleich der Methode b.get_value?
2) Gibt a.get_value () dasselbe zurück wie b.get_value ()?
3) Ist die Methodenreferenz a.get_value gleich der Methodenreferenz b.get_value?
Dies ist absolut gültig Python:)
Tags und Links python python-3.x