Fonction Python callable()
Fonctions intégrées de Python3
callable()Est une fonction intégrée de Python utilisée pour vérifier si un objet est appelable.
En Python, les fonctions, les méthodes, les classes, etc., sont tous des objets appelables.callable()Il peut nous aider à vérifier si un objet peut être appelé avant de l'appeler, évitant ainsi les erreurs d'exécution.
Définition du mot: callable 意为"可调用的",表示对象是否可以像函数一样被调用。
Syntaxe de base et paramètres
Format de syntaxe
callable(object)
Description du paramètre
- Paramètre object:
- Type : Tout objet
- Description : L'objet à vérifier.
Description de la fonction
- Valeur de retour: Renvoie une valeur booléenne
TrueouFalse。 - Remarque: Renvoyer True ne signifie pas que l'appel réussira forcément, cela signifie simplement que l'objet est appelable.
Exemples
Exemple 1 : Vérifier divers objets
Exemple
# Fonction
def my_func():
pass
print(callable(my_func)) # Sortie : True
# Méthode
class MyClass:
def my_method(self):
pass
obj = MyClass()
print(callable(obj.my_method)) # Sortie : True
# Classe (une classe peut être appelée pour créer des instances)
print(callable(MyClass)) # Sortie : True
# Fonction intégrée
print(callable(len)) # Sortie : True
print(callable(print)) # Sortie : True
# Chaîne de caractères (non appelable)
print(callable("hello")) # Sortie : False
# Nombre (non appelable)
print(callable(123)) # Sortie : False
# Expression lambda
my_lambda = lambda x: x * 2
print(callable(my_lambda)) # Sortie : True
def my_func():
pass
print(callable(my_func)) # Sortie : True
# Méthode
class MyClass:
def my_method(self):
pass
obj = MyClass()
print(callable(obj.my_method)) # Sortie : True
# Classe (une classe peut être appelée pour créer des instances)
print(callable(MyClass)) # Sortie : True
# Fonction intégrée
print(callable(len)) # Sortie : True
print(callable(print)) # Sortie : True
# Chaîne de caractères (non appelable)
print(callable("hello")) # Sortie : False
# Nombre (non appelable)
print(callable(123)) # Sortie : False
# Expression lambda
my_lambda = lambda x: x * 2
print(callable(my_lambda)) # Sortie : True
Sortie attendue :
True True True True True False False True
Analyse du code :
- Les fonctions, les méthodes, les classes et les expressions lambda sont toutes appelables.
- Les types de base tels que les chaînes de caractères et les nombres ne sont pas appelables.
Exemple 2 : Application pratique
Exemple
# Appeler une fonction en toute sécurité
def safe_call(obj, *args, **kwargs):
if callable(obj):
return obj(*args, **kwargs)
else:
return f"{obj} is not callable"
# Test
def greet(name):
return f"Bonjour, {name} !"
print(safe_call(greet, "Tom")) # Sortie : Hello, Tom!
print(safe_call("not a function")) # Sortie : not a function not callable
# Utilisation dans la conception d'API
class EventHandler:
def __init__(self):
self.handlers = {}
def register(self, event, handler):
if not callable(handler):
raise TypeError("handler doit être appelable")
self.handlers[event] = handler
def trigger(self, event, *args):
if event in self.handlers:
return self.handlers[event](*args)
handler = EventHandler()
handler.register("click", lambda: "Gérer le clic")
print(handler.trigger("click")) # Sortie : Gérer le clic
# L'enregistrement d'un objet non appelable lèvera une erreur
# handler.register("error", "not callable") # Lève TypeError
def safe_call(obj, *args, **kwargs):
if callable(obj):
return obj(*args, **kwargs)
else:
return f"{obj} is not callable"
# Test
def greet(name):
return f"Bonjour, {name} !"
print(safe_call(greet, "Tom")) # Sortie : Hello, Tom!
print(safe_call("not a function")) # Sortie : not a function not callable
# Utilisation dans la conception d'API
class EventHandler:
def __init__(self):
self.handlers = {}
def register(self, event, handler):
if not callable(handler):
raise TypeError("handler doit être appelable")
self.handlers[event] = handler
def trigger(self, event, *args):
if event in self.handlers:
return self.handlers[event](*args)
handler = EventHandler()
handler.register("click", lambda: "Gérer le clic")
print(handler.trigger("click")) # Sortie : Gérer le clic
# L'enregistrement d'un objet non appelable lèvera une erreur
# handler.register("error", "not callable") # Lève TypeError
Sortie attendue :
Hello, Tom! not a function 不可调用 处理点击
callable()Il est très utile lorsque vous devez appeler dynamiquement des fonctions ou vérifier des fonctions de rappel.
Fonctions intégrées de Python3
Autres extensions