Python内置函数callable
更新时间:2023-06-15什么是callable()函数?
Python内置函数callable()是用于判断一个对象是否是可调用的。可调用对象包括函数、方法、类和实现了__call__()方法的对象。
例如,以下是几个可调用对象的示例:
- 函数:
- 方法:
- 实现了__call__()方法的对象:
def foo(): print("Hello, callable function!")
callable(foo) # True
class MyClass: def __init__(self, x):
self.x = x
def print_x(self):
print(self.x)
obj = MyClass(42)
callable(obj.print_x) # True
class MyCallable: def __call__(self):
print("Hello, callable instance!")
obj = MyCallable()
callable(obj) # True
callable()函数的使用方法
callable()函数接受一个参数,并返回一个布尔值。如果传入的对象是可调用的,则返回True;否则返回False。
以下是使用callable()函数判断对象是否可调用的示例:
- 函数:
- 方法:
- 实现了__call__()方法的对象:
- 不可调用的对象:
def foo(): print("Hello, callable function!")
print(callable(foo)) # True
class MyClass: def __init__(self, x):
self.x = x
def print_x(self):
print(self.x)
obj = MyClass(42)
print(callable(obj.print_x)) # True
class MyCallable: def __call__(self):
print("Hello, callable instance!")
obj = MyCallable()
print(callable(obj)) # True
x = 42print(callable(x)) # False
callable()函数的注意事项
需要注意的是,当判断一个对象是否可调用时,必须传入该对象本身,而不是传入对象的结果。
以下示例展示了将函数调用结果传给callable()函数与将函数本身传给callable()函数的区别:
- 将函数本身传给callable()函数:
- 将函数调用结果传给callable()函数:
def foo(): print("Hello, callable function!")
print(callable(foo)) # True
print(callable(foo())) # TypeError: 'NoneType' object is not callable
def bar(): print("Hello, non-callable function!")
foo = bar()
print(callable(foo)) # False