Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich feststellen, ob eine Python-Variable eine Funktion darstellt?

Wie kann ich feststellen, ob eine Python-Variable eine Funktion darstellt?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-18 20:03:30528Durchsuche

How can I Determine if a Python Variable Represents a Function?

So ermitteln Sie, ob eine Variable eine Funktion in Python darstellt

In Python kann es nützlich sein, zu überprüfen, ob eine Variable auf a zeigt Funktion. Zunächst könnte man über die Verwendung von isinstance(x, function) nachdenken, aber Python löst einen NameError für die undefinierte Funktionsklasse aus.

Aufrufbare Objekte und hasattr

Um festzustellen, ob a Variable ist eine Funktion, Python bietet callable() an. Für Python 2.x und Python 3.2 bietet diese Methode die Funktionalität, nach aufrufbaren Objekten zu suchen. Alternativ kann man für Python 3.x vor 3.2 hasattr(obj, '__call__') verwenden, um zu prüfen, ob das Objekt ein __call__-Attribut besitzt, das für aufrufbare Objekte charakteristisch ist.

Vorbehalte beitypes.FunctionType und inspect.isfunction

Obwohl Ansätze vorgeschlagen wurden, die „types.FunctionTypes“ oder „inspect.isfunction“ verwenden, weisen diese Methoden Einschränkungen auf. Sie geben False für Nicht-Python-Funktionen zurück. In C implementierte integrierte Funktionen bestehen diese Prüfung nicht, obwohl sie aufrufbar sind:

<code class="python">>>> isinstance(open, types.FunctionType)
False
>>> callable(open)
True</code>

Daher sollte die Überprüfung der aufrufbaren Natur eines Objekts die explizite Überprüfung seiner Aufruffähigkeit und nicht seiner Konformität umfassen zu einer bestimmten Klassendefinition.

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob eine Python-Variable eine Funktion darstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn