Maison >développement back-end >Tutoriel Python >Comment déterminer si une variable en Python représente une fonction ?

Comment déterminer si une variable en Python représente une fonction ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-18 20:05:30757parcourir

How Do You Determine If a Variable in Python Represents a Function?

Comment vérifier si une variable représente une fonction

En Python, il est courant de rencontrer des variables pouvant faire référence à des fonctions. Déterminer si une variable pointe vers une fonction est essentiel pour diverses tâches de programmation.

Tenter d'utiliser isinstance(x, function) pour identifier des fonctions peut échouer en raison de l'objet "fonction" non défini. Considérez plutôt les approches suivantes :

Python 2.x et Python 3.2

La fonction callable() sert d'indicateur fiable. Vous pouvez l'utiliser comme suit :

<code class="python">callable(obj)</code>

Python 3.x (avant 3.2)

Vous pouvez également vérifier la présence de l'attribut __call__ :

<code class="python">hasattr(obj, '__call__')</code>

Mises en garde avec types.FunctionTypes et inspect.isfunction

Bien que types.FunctionTypes et inspect.isfunction offrent également des moyens d'identifier les fonctions, ils comportent certaines limitations. Notamment, ils renvoient False pour les fonctions implémentées en C plutôt qu'en Python. Cela peut conduire à des résultats inattendus, comme indiqué ci-dessous :

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

L'approche Duck Typing

La méthode la plus fiable consiste à vérifier si l'objet peut être appelé. Si tel est le cas, cela est considéré comme une fonction. C'est ce qu'on appelle l'approche du « typage canard » :

<code class="python">callable(obj)</code>

En conclusion, la fonction callable() et l'attribut __call__ fournissent des moyens efficaces pour détecter si une variable fait référence à une fonction en Python. Soyez conscient des mises en garde associées à types.FunctionTypes et inspect.isfunction pour les fonctions non Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn