Python callable()-Funktion
Python3 integrierte Funktionen
callable()Ist eine in Python integrierte Funktion, mit der überprüft wird, ob ein Objekt aufrufbar ist.
In Python sind Funktionen, Methoden, Klassen usw. alle aufrufbare Objekte.callable()Es kann uns helfen, vor dem Aufruf zu prüfen, ob ein Objekt aufgerufen werden kann, um Laufzeitfehler zu vermeiden.
Wortdefinition: callable 意为"可调用的",表示对象是否可以像函数一样被调用。
Grundlegende Syntax und Parameter
Syntaxformat
callable(object)
Parameterbeschreibung
- Parameter object:
- Typ: Beliebiges Objekt
- Beschreibung: Das zu prüfende Objekt.
Funktionsbeschreibung
- Rückgabewert: Gibt einen booleschen Wert zurück
TrueoderFalse。 - Hinweis: Die Rückgabe von True bedeutet nicht, dass der Aufruf definitiv erfolgreich sein wird; es bedeutet nur, dass das Objekt aufrufbar ist.
Beispiele
Beispiel 1: Verschiedene Objekte prüfen
Beispiel
# Funktion
def my_func():
pass
print(callable(my_func)) # Ausgabe: True
# Methode
class MyClass:
def my_method(self):
pass
obj = MyClass()
print(callable(obj.my_method)) # Ausgabe: True
# Klasse (eine Klasse kann aufgerufen werden, um Instanzen zu erstellen)
print(callable(MyClass)) # Ausgabe: True
# Eingebaute Funktion
print(callable(len)) # Ausgabe: True
print(callable(print)) # Ausgabe: True
# String (nicht aufrufbar)
print(callable("hello")) # Ausgabe: False
# Zahl (nicht aufrufbar)
print(callable(123)) # Ausgabe: False
# Lambda-Ausdruck
my_lambda = lambda x: x * 2
print(callable(my_lambda)) # Ausgabe: True
def my_func():
pass
print(callable(my_func)) # Ausgabe: True
# Methode
class MyClass:
def my_method(self):
pass
obj = MyClass()
print(callable(obj.my_method)) # Ausgabe: True
# Klasse (eine Klasse kann aufgerufen werden, um Instanzen zu erstellen)
print(callable(MyClass)) # Ausgabe: True
# Eingebaute Funktion
print(callable(len)) # Ausgabe: True
print(callable(print)) # Ausgabe: True
# String (nicht aufrufbar)
print(callable("hello")) # Ausgabe: False
# Zahl (nicht aufrufbar)
print(callable(123)) # Ausgabe: False
# Lambda-Ausdruck
my_lambda = lambda x: x * 2
print(callable(my_lambda)) # Ausgabe: True
Erwartete Ausgabe:
True True True True True False False True
Codeanalyse:
- Funktionen, Methoden, Klassen und Lambda-Ausdrücke sind alle aufrufbar.
- Basistypen wie Zeichenketten und Zahlen sind nicht aufrufbar.
Beispiel 2: Praktische Anwendung
Beispiel
# Eine Funktion sicher aufrufen
def safe_call(obj, *args, **kwargs):
if callable(obj):
return obj(*args, **kwargs)
else:
return f"{obj} ist nicht aufrufbar"
# Test
def greet(name):
return f"Hello, {name}!"
print(safe_call(greet, "Tom")) # Ausgabe: Hallo, Tom!
print(safe_call("keine Funktion")) # Ausgabe: keine Funktion ist nicht aufrufbar
# Verwendung im API-Design
class EventHandler:
def __init__(self):
self.handlers = {}
def register(self, event, handler):
if not callable(handler):
raise TypeError("handler muss aufrufbar sein")
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: "Klick verarbeiten")
print(handler.trigger("click")) # Ausgabe: Klick verarbeiten
# Das Registrieren eines nicht aufrufbaren Objekts löst einen Fehler aus
# handler.register("error", "not callable") # Löst TypeError aus
def safe_call(obj, *args, **kwargs):
if callable(obj):
return obj(*args, **kwargs)
else:
return f"{obj} ist nicht aufrufbar"
# Test
def greet(name):
return f"Hello, {name}!"
print(safe_call(greet, "Tom")) # Ausgabe: Hallo, Tom!
print(safe_call("keine Funktion")) # Ausgabe: keine Funktion ist nicht aufrufbar
# Verwendung im API-Design
class EventHandler:
def __init__(self):
self.handlers = {}
def register(self, event, handler):
if not callable(handler):
raise TypeError("handler muss aufrufbar sein")
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: "Klick verarbeiten")
print(handler.trigger("click")) # Ausgabe: Klick verarbeiten
# Das Registrieren eines nicht aufrufbaren Objekts löst einen Fehler aus
# handler.register("error", "not callable") # Löst TypeError aus
Erwartete Ausgabe:
Hello, Tom! not a function 不可调用 处理点击
callable()Es ist sehr nützlich, wenn Sie Funktionen dynamisch aufrufen oder Callback-Funktionen überprüfen müssen.
Python3 integrierte Funktionen
Andere Erweiterungen