Heim > Backend-Entwicklung > Python-Tutorial > Wie erkennt man, ob eine Variable eine Funktion in Python darstellt?

Wie erkennt man, ob eine Variable eine Funktion in Python darstellt?

Susan Sarandon
Freigeben: 2024-10-18 20:00:31
Original
979 Leute haben es durchsucht

How to Detect Whether a Variable Represents a Function in Python?

Erkennen, ob eine Variable eine Funktion ist

In Python kann es verwirrend sein, festzustellen, ob eine Variable eine Funktion darstellt. Der intuitive Ansatz isinstance(x, function) schlägt aufgrund der undefinierten „Funktions“-Referenz fehl.

Lösung 1: callable()

Für Python 2.x oder 3.2 bietet callable() eine direkte und unkomplizierte Prüfung:

<code class="python">callable(x)</code>
Nach dem Login kopieren

Lösung 2: call Attribut (Python 3.x vor 3.2)

Vor Python 3.2 muss man das Objekt auf das Attribut __call__ untersuchen:

<code class="python">hasattr(x, '__call__')</code>
Nach dem Login kopieren

Vorbehalte bei Typen und Inspektion

Während der Typen.FunctionTypes und inspect .isfunction-Methoden vorhanden sind, können sie unerwartete Ergebnisse liefern. Nicht-Python-Funktionen, wie viele integrierte Funktionen, geben mit diesen Methoden „False“ zurück:

<code class="python">import types, inspect
isinstance(open, types.FunctionType) # False
callable(open) # True</code>
Nach dem Login kopieren

Best Practice: Duck Typing

Anstatt sich auf isinstance oder inspect zu verlassen, Der bevorzugte Ansatz besteht darin, zu prüfen, ob das Objekt aufgerufen werden kann, und dabei das „Duck-Typed“-Prinzip nachzuahmen:

<code class="python">def quacks_like_a_function(x):
    return callable(x)</code>
Nach dem Login kopieren

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

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage