In Python gelten Funktionen und Methoden als erstklassige Objekte, was bedeutet, dass sie wie jeder andere Datentyp behandelt werden können. Ein einzigartiger Aspekt erstklassiger Objekte ist jedoch die Möglichkeit, sie ohne Klammern zu verwenden.
Erklärung des Codebeispiels
Das bereitgestellte Codefragment initialisiert zwei Instanzen des Objekttests Klasse a und b mit demselben Wert. Die Ausgabe zeigt Folgendes:
Weglassen von Klammern
Das überraschende Ergebnis ist der letzte Ausdruck, a.get_value == b.get_value. Dies ergibt „False“, obwohl „get_value“ für beide Objekte dieselbe Methode ist. Dies liegt daran, dass wir ohne Klammern nicht die Methode aufrufen, sondern auf das Funktionsobjekt selbst zugreifen.
Warum das Weglassen erlaubt ist
Python erlaubt aus diesem Grund das Weglassen von Klammern bietet eine prägnante Möglichkeit, einen Verweis auf die aufrufbare Funktion (Funktion oder Methode) selbst zu übergeben. Dies ist in mehreren Situationen besonders nützlich:
Rückrufe verwenden:
Rückrufe sind Funktionen oder Methoden, die an eine andere Funktion übergeben werden, um sie zu einem späteren Zeitpunkt auszuführen. Das Weglassen von Klammern ermöglicht die Übergabe der Callback-Referenz, wie im Multiprocessing-Beispiel zu sehen ist:
t = Process(target=my_long_running_function)
Mapping-Funktionen:
Bei Verwendung der Map-Funktion können Sie a übergeben ohne Klammern aufrufbar, um seine Argumente einzugeben:
map(do_something, ['hey', 'what up', 'yo'])
Dynamisch Aufruf:
Das Weglassen von Klammern ermöglicht einen dynamischen Aufruf, bei dem Sie das gewünschte Callable aus einer Sammlung abrufen und ausführen können:
str_ops = {'<': lt, '>': gt, '==': eq} op = str_ops.get(my_operator) if op: result = op(lhs, rhs)
Zusammenfassend lässt sich sagen, dass das Weglassen von Klammern beim Aufrufen von Funktionen oder Methoden möglich ist für die effiziente Übergabe von Referenzen an das Callable selbst und ermöglicht verschiedene Funktionalitäten wie Rückrufe, dynamische Aufrufe und Mapping.
Das obige ist der detaillierte Inhalt vonWann ist das Weglassen von Klammern in Python-Funktions- und -Methodenaufrufen zulässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!