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

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

Susan Sarandon
Libérer: 2024-10-18 20:00:31
original
981 Les gens l'ont consulté

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

Détecter si une variable est une fonction

En Python, déterminer si une variable représente une fonction peut être déroutant. L'approche intuitive, isinstance(x, function), échoue en raison de la référence 'fonction' non définie.

Solution 1 : callable()

Pour Python 2.x ou 3.2, callable() fournit une vérification directe et simple :

<code class="python">callable(x)</code>
Copier après la connexion

Solution 2 : call Attribut (Python 3.x avant 3.2)

Avant Python 3.2, il faut inspecter l'objet pour l'attribut __call__ :

<code class="python">hasattr(x, '__call__')</code>
Copier après la connexion

Mises en garde concernant les types et l'inspection

While types.FunctionTypes et inspecter Les méthodes .isfunction existent, elles peuvent fournir des résultats inattendus. Les fonctions non Python, telles que de nombreuses fonctions intégrées, renvoient False en utilisant ces méthodes :

<code class="python">import types, inspect
isinstance(open, types.FunctionType) # False
callable(open) # True</code>
Copier après la connexion

Meilleure pratique : Duck Typing

Plutôt que de s'appuyer sur isinstance ou inspect, l'approche privilégiée est de vérifier si l'objet peut être appelé, en imitant le principe du "type canard" :

<code class="python">def quacks_like_a_function(x):
    return callable(x)</code>
Copier après la connexion

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