In Python stößt man häufig auf Variablen, die möglicherweise auf Funktionen verweisen. Die Bestimmung, ob eine Variable auf eine Funktion zeigt, ist für verschiedene Programmieraufgaben von entscheidender Bedeutung.
Der Versuch, isinstance(x, function) zum Identifizieren von Funktionen zu verwenden, kann aufgrund des undefinierten „Funktions“-Objekts fehlschlagen. Betrachten Sie stattdessen die folgenden Ansätze:
Die Funktion callable() dient als zuverlässiger Indikator. Sie können es wie folgt verwenden:
<code class="python">callable(obj)</code>
Alternativ prüfen Sie, ob das Attribut __call__ vorhanden ist:
<code class="python">hasattr(obj, '__call__')</code>
Types.FunctionTypes und „inspect.isfunction“ bieten zwar auch Möglichkeiten zur Identifizierung von Funktionen, weisen jedoch einige Einschränkungen auf. Insbesondere geben sie „False“ für Funktionen zurück, die in C und nicht in Python implementiert sind. Dies kann zu unerwarteten Ergebnissen führen, wie unten dargestellt:
<code class="python">>>> isinstance(open, types.FunctionType) False >>> callable(open) True</code>
Die zuverlässigste Methode besteht darin, zu prüfen, ob das Objekt aufgerufen werden kann. Wenn dies möglich ist, wird es als Funktion betrachtet. Dies ist als „Duck-Typing“-Ansatz bekannt:
<code class="python">callable(obj)</code>
Zusammenfassend lässt sich sagen, dass die Funktion callable() und das Attribut __call__ effektive Möglichkeiten bieten, um zu erkennen, ob eine Variable auf eine Funktion in Python verweist. Beachten Sie die Einschränkungen, die mit „types.FunctionTypes“ und „inspect.isfunction“ für Nicht-Python-Funktionen verbunden sind.
Das obige ist der detaillierte Inhalt vonWie bestimmen Sie, ob eine Variable in Python eine Funktion darstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!