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
Libérer: 2024-10-18 20:05:30
original
739 Les gens l'ont consulté

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>
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal